1 차원 배열 을 만 드 는 몇 가지 방법
7674 단어 JavaSE
성명
[]
[] //
이 부분 에서 볼 때 두 가지 성명 방식 의 효 과 는 같 지만 첫 번 째 방법 으로 성명 하 는 것 을 추천 합 니 다. 첫 번 째 방법 은 더욱 직관 적 이 고 가 독성 이 있 기 때문에 성명 을 통 해 일반적인 데이터 유형 이 아니 라 인용 유형 임 을 알 수 있 습 니 다. 구체 적 인 정형 배열 성명 은 다음 과 같 습 니 다.
int
int[] arrNum;
int arrNum[];
여기 서 의 이름 은 개인의 취향 을 볼 때 어쨌든 자신의 규범 이 있어 야 합 니 다. 저 는 개인 적 으로 접두사
arr
를 추가 합 니 다. 또한 주의해 야 할 것 은 자바 언어 에서 배열 을 설명 할 때 그 길 이 를 지정 할 수 없습니다. 배열 은 인용 형 변수 이기 때 문 입 니 다. 즉, 배열 이 정의 할 때 실질 적 으로 인용 변수 (또는 지침) 를 정의 한 것 입 니 다.이 때 이 인용 변 수 는 유효한 메모 리 를 가리 키 지 않 았 고 메모리 에 메모리 공간 이 열 리 지 않 아 길 이 를 지정 할 수 없습니다. 오류 정의//int[5] arrNum;
//int arrNum[5];
그렇다면 이때 C + + 를 배 운 적 이 있 는 사람 은 왜 C + + 에서 배열 을 이렇게 정의 하 는 것 이 합 법 적 이 냐 고 물 을 수 있 습 니 다.그리고 이렇게 정 의 된 후에 사용 할 수 있 는데 자바 는 만 들 고 초기 화 한 후에 사용 할 수 있 습 니까?C 와 C + + 의 배열 은 메모리 블록 이기 때문에 자바 에서 안전성 을 고려 하여 정 의 된 배열 은 대상 이 고 배열 은 대상 자체 가 아니 라 대상 의 참조 일 뿐 자바 의 대상 은 쌓 여 있 기 때문에 배열 은 원본 형식 이 든 다른 대상 유형 이 든 배열 대상 자체 가 쌓 여 있 습 니 다.
창설
자바 는 new 키 워드 를 사용 하여 배열 을 만 듭 니 다. 배열 생 성 이 초기 화 되 지 않 았 다 면 배열 의 크기 를 지정 해 야 합 니 다.
arrNum = new int[5];//
arrNum = new int[]{0,1,2,3,4};//
//arrNum = new int[];// ,
사례 1:
public class ArrayDemo {
public static void main(String []args){
int [] arrNum;
int [] arrNum1;
int [] arrNum2 = new int[5];
arrNum = new int[5];
arrNum1 = new int[]{1,2,3,4,5};
System.out.println(arrNum[0]);
System.out.println(arrNum1[0]);
System.out.println(arrNum2[0]);
}
}
이 세 가지 방법 을 볼 수 있 습 니 다. 배열 을 만 드 는 것 이 모두 정확 합 니 다.
초기 화
사실은 위의 사례 에서 배열 의 초기 화 와 관련 되 었 습 니 다. 배열 의 초기 화 는 정적 초기 화, 동적 초기 화 와 기본 초기 화 동적 초기 화 로 나 뉘 는데 이것 은 바로 생 성 과정 에서 배열 의 크기 만 설명 하고 시스템 에서 배열 의 값 을 분배 하 는 것 입 니 다.
int [] arrNum;
arrNum = new int[5];
int [] arrNum = new int[5];//
정적 초기 화 는 프로그래머 가 모든 배열 요 소 를 명시 적 으로 지정 하 는 값 입 니 다.
int [] arrNum1;
arrNum1 = new int[]{1,2,3,4,5};
int[] arrNum1 = {1,2,3,4,5};//
여기 서 정적 초기 화 방식 에 대해 서 는 첫 번 째 방식 을 추천 하 며 간략화 방식 을 추천 하지 않 습 니 다.
스 택 분석
상기 배열 을 만 드 는 방식 은 모두 두 가지 방식 입 니 다. 방식 1:
int[] arrNum;
arrNum = new int[5];
이런 방식 에 대해 실질 적 으로 첫 번 째 문장 은 인용 대상 을 만 드 는 것 이다. 창고 메모리 에 대상 을 열 었 다 고 볼 수 있 고 이 대상 을 위해 빈 바늘 을 만 들 었 다. 이때 두 번 째 문장 이 없 으 면 컴 파 일 러 가 잘못된 방향 을 가리 키 는 이상 을 알 릴 수 있다. 두 번 째 문장의 역할 은 메모리 에 크기 가 5 인 메모리 공간 을 만 드 는 방식 이다. 두 번 째 문장 은 다음 과 같다.
int[] arrNum = new int[5];
실제로 이런 방법 은 첫 번 째 단 계 를 줄 이 는 것 이 고, 대상 을 창고 에서 개척 하 는 과정 을 하나의 과정 으로 합 친 것 이 라 고 할 수 있다.
인용 전달
앞에서 배열 이 실제 적 으로 인용 유형 이 라 고 언급 한 이상 배열 은 반드시 인용 전달 이 발생 할 수 있 습 니 다. 인용 전달 이 무엇 입 니까?실질 적 으로 같은 메모리 공간 이 서로 다른 스 택 공간 에 접근 할 수 있다 는 것 입 니 다. 그러면 배열 의 인용 전달 은 어떻게 이 루어 집 니까?사례 2:
public class ArrayDemo {
public static void main(String[] args) {
int[] arrNum;
arrNum = new int[]{1, 2, 3, 4, 5};
int[] temp = arrNum;
temp[0] = 10;
for (int i = 0;i < arrNum.length; i++){
System.out.println(arrNum[i]);
}
}
}
:
10
2
3
4
5
Process finished with exit code 0
이때 구문
int[] temp = arrNum;
에 대해 서 는 temp 배열 을 스 택 메모리 공간 에서 열 어 놓 은 주 소 를 data 배열 과 같은 메모리 주 소 를 가리 키 는 것 을 실 행 했 습 니 다. 이때 temp [0] 의 값 을 바 꾸 는 것 은 실질 적 으로 arNum [0] 의 값 을 동시에 바 꾸 었 습 니 다.총결산
이상 은 배열 의 관련 조작 을 상세 하 게 배 웠 습 니 다. 그러나 이것 은 데이터 의 바 텀 디자인 을 파악 하기 위해 서 입 니 다. 실제 작업 에서 동태 적 이 든 정태 적 인 방법 이 든 사용 하지 않 습 니 다. 배열 의 가장 큰 단점 은 배열 의 길이 가 바 뀌 지 않 는 다 는 것 입 니 다.실제 과정 에서 일반적으로 값 을 전달 하거나 다른 방식 으로 동적 으로 배열 을 생 성 하 는 것 이지 배열 의 크기 를 미리 지정 하 는 것 이 아니다.
자바 가 배열 을 만 드 는 몇 가지 방식 으로 배열 이 C + 자바 에서 의 차이 점
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WeakHashMap,IdentityHashMap,EnumMap다른 맵 구현 클래스와 달리 WeakHashMap 클래스의 키 대상은 간접적으로 약한 인용의 지시 대상으로 저장되며, 키가 정상적으로 사용되지 않을 때 자동으로 항목을 제거합니다.더 정확히 말하면, 주어진 키에 대한...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.