본문 바로가기
Edu/18. Language: Java

배열

by Lacuna028 2021. 12. 14.

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