[Java] 배열

손유정·2022년 1월 29일
post-thumbnail

1. 배열

인덱스를 이용해서 자료형이 같은 다수의 데이터를 쉽고 효율적이게 관리하기 위해 사용하는 것이다.

EX) 배열길이 n일 때,

인덱스 1인덱스 2인덱스 3. . .인덱스 n-1
데이터데이터데이터. . .데이터

2. 배열 선언 및 초기화

배열도 변수와 마찬가지로 선언과 초기화 과정을 거쳐 사용한다.
배열 선언 시에 배열의 타입과 크기를 정하므로 이후 배열의 크기가 변하지 않는다.

2.1. 배열 선언 후 초기화

int[] arr1 = new int[5]; 

arr1[0] = 10;
arr1[1] = 20;
arr1[2] = 30;
arr1[3] = 40;
arr1[4] = 50;

System.out.println("arr1[0] : " + arr1[0]); // arr1[0] : 10
System.out.println("arr1[1] : " + arr1[1]); // arr1[1] : 20
System.out.println("arr1[2] : " + arr1[2]); // arr1[2] : 30
System.out.println("arr1[3] : " + arr1[3]); // arr1[3] : 40
System.out.println("arr1[4] : " + arr1[4]); // arr1[4] : 50

2.2. 배열 선언과 초기화를 동시에

int[] arr2 = [100, 200, 300, 400, 500]

System.out.println("arr1[0] : " + arr1[0]); // arr1[0] : 100
System.out.println("arr1[1] : " + arr1[1]); // arr1[1] : 200
System.out.println("arr1[2] : " + arr1[2]); // arr1[2] : 300
System.out.println("arr1[3] : " + arr1[3]); // arr1[3] : 400
System.out.println("arr1[4] : " + arr1[4]); // arr1[4] : 500

3. 배열과 메모리

배열을 구성하는 데이터의 자료형에 따라서 배열의 메모리 크기가 결정된다.

  • EX) int[] arr = new int[3]; → int형 4 Byte * 3 = 12 Byte

기본 자료형 데이터를 담고 있는 변수와 달리 배열은 객체 자료형이기 때문에 배열 변수는 배열 데이터의 주소를 담고 있다.

4. 배열 기본 속성

4.1. 배열 길이

int[] arr1 = { 10, 20, 30, 40, 50 }

System.out.println( arr1.length ); // 5

4.2. 배열 요소 출력

int[] arr1 = { 10, 20, 30, 40, 50 }

System.out.println( Arrays.toString(arr1) ); // [ 10, 20, 30, 40, 50 ]

4.3 배열 복사

배열 요소 복사 : 배열 데이터의 주소가 아닌 배열의 요소들만 복사한다
배열 레퍼런스 : 배열 데이터의 주소를 복사한다

int[] arr1 = { 10, 20, 30, 40, 50 }
int[] arr2 = null;
int[] arr3 = null;

// 배열 요소 복사
arr2 = Arrays.copyOf( arr1, arr1.length ); 
System.out.println( Arrays.toString(arr2) ); // [ 10, 20, 30, 40, 50 ]

// 배열 레퍼런스
arr3 = arr1 
System.out.println("arr1 : " + arr1); // arr1 : [I@4554617c]
System.out.println("arr2 : " + arr2); // arr2 : [I@4554617c]
System.out.println("arr3 : " + arr3); // arr3 : [I@74a14482]

5. 다차원 배열

배열 안에 또 다른 배열이 존재할 수 있다.

int[][] arr = new int[3][2]; // [행][열]
arr[0][0] = 1;
arr[0][1] = 10;
arr[1][0] = 2;
arr[1][1] = 20;
arr[2][0] = 3;
arr[2][1] = 30;

System.out.println( Arrays.toString(arr[0]) ); // [1, 10]
System.out.println( Arrays.toString(arr[1]) ); // [2, 20]
System.out.println( Arrays.toString(arr[2]) ); // [3, 30]
profile
개발자를 꿈꾸는 곰손이

0개의 댓글