공부/Java

[Java-05] 배열(Array) - String 배열, 2차원 배열

줭♪(´▽`) 2021. 2. 15. 12:12

1. String 배열

1) String 배열의 선언과 생성

 

String[] name = new String[3];

 

- String타입의 참조변수를 저장하기 위한 공간이 마련

- 참조형 변수의 기본값은 null이므로 각 요소는 null로 초기화

 

2) String 배열의 초기화

String[] name = new String[3];
name[0] = new String("Lee");
name[1] = new String("Yeon");
name[2] = new String("Ju");

// 원래 String은 new 연산자를 사용해 객체를 생성해야하나 생략할 수 있음
String[] name = new String[3];
name[0] = "Lee";
name[1] = "Yeon";
name[2] = "Ju";

 

간략화한 그림
정확한 그림 (배열에 실제 객체가 아닌 객체의 주소가 저장되어 있음)

 

3) char배열과 String클래스

- String클래스는 char배열에 기능(메서드)을 추가한 것임

- char배열과 다르게 String객체(문자열)는 읽을 수만 있을 뿐, 내용을 변경할 수 없음

 

+) 커맨드 라인으로 입력받기

- 프로그램을 실행할 때 클래스 이름 뒤에 공백문자로 구분하여 여러 개의 문자열을 프로그램에 전달할 수 있음

 

ex) C:\jdk1.8\work\ch5>java ArrayEx16 abc 123 "Hello"

-> public static void main(String[] args) { } 에서 args에 입력된 문자열들이 들어감

-> 숫자든 문자든 문자열로 처리됨

 

2. 2차원 배열

1) 다차원 배열

- 1차원 배열이 아닌 2차원 이상의 배열을 뜻함 (2차원, 3차원, ...)

 

2) 2차원 배열의 선언과 생성

 

선언 방법 선언 예
타입[][] 변수이름; int[][] score;
타입 변수이름[][]; int score[][];
타입[] 변수이름[]; int[] score[];

 

int[][] score = new int[4][3];

 

- 4행 3열의 데이터, 모두 12개의 int값을 저장할 수 있는 공간이 마련됨

- 각 요소는 int의 기본값인 0으로 초기화

 

3) 2차원 배열의 index

- 2차원 배열은 행(row)열(column)로 구서외어 있음

- 행index의 범위 : 0 ~ 행의 길이-1

- 열index의 범위 : 0 ~ 열의 길이-1

- 2차원 배열의 각 요소에 접근하는 방법 : 배열이름[행index][열index]

 

int[][] score = new int[4][3];

score[0][0] = 100;
System.out.println(score[0][0]);

 

 

4) 2차원 배열의 초기화

- 괄호{}를 사용해서 생성과 초기화를 동시에 할 수 있음

- 단, 1차원 배열보다 괄호{}를 한번 더 써서 행별로 구분해 줌

 

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

// 또는

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

// 행별로 줄 바꿈을 해주는 것이 좋음

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

 

int[][] score = {
	{100, 100, 100},
    	{20, 20, 20},
    	{30, 30, 30},
    	{40, 40, 40},
    	{50, 50, 50}
};

2차원 배열 score

※ 2차원 배열의 length

- score.length 는 행의 수

- score[i].length 는 i행의 열의 수

 

3. 가변 배열

-  2차원 이상의 다차원 배열을 생성할 때 전체 배열 차수 중 마지막 차수의 길이를 지정하지 않고, 추후에 각기 다른 길이의 배열을 생성함으로써 고정된 형태가 아닌 유동적인 가변 배열을 구성할 수 있음

 

int[][] score = new int[5][];

// 각 행마다 다른 길이의 배열을 생성할 수 있음
score[0] = new int[4];
score[1] = new int[3];
score[2] = new int[2];
score[3] = new int[1];
score[4] = new int[3];

각 행의 길이가 다른 2차원 배열 score

 

- 가변배열도 괄호{}를 이용해서 생성과 초기화를 동시에 할 수 있음

 

int[][] score = {
	{100, 100, 100, 100},
    	{20, 20, 20},
        {30, 30},
        {40},
        {50, 50, 50, 50}
};

 

 

 

참고 - Java의 정석 3rd Edition (저자 : 남궁성, 출판 : 도우출판)