JAVA - 배열

이재원·2024년 10월 20일
0

JAVA

목록 보기
2/7

자바에서의 배열

자바의 배열은 참조자료형이다. 자바는 클래스와 배열 등 모두 동적 할당 하기 때문이다. 따라서 배열을 사용하기 위해서는 참조변수 선언 후 배열 객체를 동적으로 생성해 할당해 주는 과정이 필요하다.

1차원 배열의 선언

기본 자료형의 선언

배열 선언으로 실제 배열 객체가 생성되지는 않고 단지 참조변수만 생성된다. 참조변수 선언시에는 크기를 지정하지 않고도 선언 가능하다.

int[] list;
int array[];

이렇게 선언된 참조변수에 new 연산자를 통해 VM이 메모리의 주소를 계산하는데 필요한 정보를 저장한다. 이때, 참조변수에는 id 형태로 참조 id가 저장되는 것이지 메모리가 저장되는 것이 아니다.

list = new int[5]; // 5 대신 size와 같이 가변 길이로 선언도 가능

배열의 요소를 선택할 때는 C언어에서처럼 첨자를 사용하여 접근하면 된다.

list[0] = 90;

이렇게 초기화된 배열을 그림으로 표현해보면 아래와 같다.

초기화를 하는 또 다른 방법으로는 중괄호를 이용할 수 있다.

// 두 가지 모두 가능
int[] list = {10, 20, 30, 40, 50};
int[] arr = new int[]{10, 20, 30, 40, 50};

만약 이렇게 생성과 동시에 초기화를 하지 않는 경우 반복문을 통해 각 요소에 직접 할당해 줘야 한다.

객체(참조)형의 선언

객체 배열 생성시에는 new 연산자를 통해 배열을 동적 할당하는 것은 기본 자료형의 배열 선언과 동일하다. 다른 점은 각 요소에 필요한 객체를 동적 할당을 해줘야 한다는 점이다.

아래는 직접 정의한 Circle 클래스를 객체 배열로 선언하는 예제이다.

Circle[] circles;
circles = new Circle[3];

circles[0] = new Circle(1);
circles[1] = new Circle(10);
circles[2] = new Circle();

아래는 그림으로 나타낸 것이다.

다음 예제는 String 객체 배열의 선언이다. String은 기본 자료형이 아닌 클래스이기 때문이다.

String[] arr;
arr = new String[3];

arr[0] = "Java" // new String("Java")와 동일
arr[1] = "Array" // new String("Array")와 동일
arr[2] = "Test" // new String("Test")와 동일

아래는 위 코드를 그림으로 나타낸 것이다.

String의 특징으로는 한번 할당한 문자열의 수정이 불가능하기 때문에 재할당을 통해 값을 바꿔주는 것이다.

자바에서는 배열의 요소를 참조하기 위해 for-each 반복문을 제공한다. 사용법은 아래와 같다.

String[] arr = {"홍길동", "일지매", "이지매"};
for(String s : arr)
	System.out,println(s);

다차원 배열

고정적 길이의 2차원 배열 선언

int[][] test1;
test1 = new int[2][3];

2차원 배열은 행과 열로 이해하는 방법도 있지만 각 행은 각 열을 참조하는 형태이기 때문에 행을 그룹으로 생각하는 것이 훨씬 직관적이다.

위 그림은 test1[0]과 test[1] 이라는 두 그룹이 있고, 각 열에 대한 참조값이 그룹에 저장되는 형태이다.

가변적 길이의 배열 선언

int[][] test2;
test2 = new int[2][];

test2[0] = new int[2];
test2[1] = new int[4];

2차원 객체 배열의 선언

String[][] test3;
test3 = new String[2][];

test3[0] = new String[2];
test3[1] = new String[3];

test3[0][0] = new String("hi");
test3[0][1] = new String("bye");

test3[1][0] = new String("a");
test3[1][1] = new String("b");
test3[1][2] = new String("c");

2차원 배열의 초기화

int[][] array = { {1, 3, 5}, {2, 4, 6} };

반복문을 통한 2차원 배열 요소 접근

for(int i = 0; i < array.length; i++) {
	for(int j = 0; j < array[i].length; j++) {
		System.out.println(array[i][j]);
	}
}

첫번째 for문을 통해 각 그룹에 접근하고, 두번째 for문을 통해 각 그룹에 대한 열에 접근하는 형태이다.

출처
명품 JAVA programming - 황기태, 김효수
https://www.youtube.com/사람만이

profile
20학번 새내기^^(였음..)
post-custom-banner

0개의 댓글