1. 배열 생성 방법
1) 선언과 동시에 빈 배열 생성
// 크기가 5인 빈 배열 생성 int[] intArray = new int[5];
2) 선언 후, 배열 생성
// 크기가 5인 빈 배열 int[] intArray; intArray = new int[5];
3) 리터럴로 생성
// 크기가 5인 배열을 생성과 동시에 값 넣기 int[] intArray = {1,2,3,4,5}
위의 경우
int[] intArray;
intArray = {1,2,3,4,5}
와 같이 작성할 경우 에러 발생. 위의 코드는 변수를 정의할 때만 사용가능한 방식.
2. 배열 사용
1) 값 대입
// 빈 배열 생성 후 값 할당 intArray[0] = 1 intArray[1] = 2 intArray[2] = 3 intArray[3] = 4 intArray[4] = 5
2) 앨리어싱(Aliasing)
int[] arr1 = {1,2,3,4,5}; int[] arr2 = arr1; // 같은 주소값 바라봄 // arr1[0] 값 변경 전 System.out.println(arr2[0]); // -- 1 //arr1[0]값 변경 후 arr1[0]= 100; System.out.println(arr2[0]); // -- 2
위의 경우 arr1과 arr2는 같은 주소값을 바라보므로, arr2는 arr1의 앨리아스라고 할 수 있음.
따라서 arr1의 값이 바뀌는 경우 arr2도 같이 바뀌게 됨. 왜냐하면 바라보는 데이터 주소값이 같으니까!
그래서 arr1[0] 값 변경 전 arr2[0]의 값은 1로 나오고,
arr1[0]값 변경 후 arr2[0]의 값은 100으로 출력된다.
그렇다면 arr1의 원본을 arr2에 할당하고, arr1은 값을 바꾸어도 arr2에 영향을 미치고 싶지 않을 땐?
clone() 메소드를 사용하면 된다.
int[] arr1 = {1, 2, 3, 4, 5}; int[] arr2 = arr1.clone(); // arr1[0] 인덱스값 변경 전 System.out.println(arr2[0]); // -- 1 // arr1[0] 인덱스값 변경 후 arr1[0] = 100; System.out.println(arr2[0]); // -- 2
--1: 프린트 구문 출력값: 1
--2: 프린트 구문 출력값: 1
이전 케이스와 다르게 arr1[0]의 인덱스 값이 변경되어도 arr2[0]에는 영향을 미치지 않는다.
'Edu > 18. Language: Java' 카테고리의 다른 글
문자열 핸들링 함수 (0) | 2023.11.29 |
---|---|
[연습문제] 배열 (0) | 2021.12.14 |
[연습문제] While (0) | 2021.12.14 |
객체 생성 (0) | 2021.12.12 |
변수명 규칙: $와 _ (0) | 2021.12.12 |