본문 바로가기

개발일기/Java

[Java] Java의 정석 (3) 배열

 

배열의 선언과 생성

 

배열의 선언 방법

int[] score;
String[] name;

int score[];
String name[];

- 두 방법 모두 가능.

 

 

배열 선언 후 생성

int[] score; // 참조변수 score을 선언
score = new int[10]; // score이 가리키는 저장공간에 int형 데이터 10개를 저장할 수 있는 배열 생성

 

 

 

배열의 길이

 

- 배열은 한 번 생성하면 그 길이를 바꿀 수 없다.

- 연속적인 데이터를 저장하기 때문이며, 더 많은 데이터를 저장할 배열이 필요한 경우엔 새로운 배열을 선언해야 한다.

int [] arr = new int[5];
int tmp = arr.length; // tmp에 5가 저장

 

 

 

배열의 초기화

 

- 배열의 각 요소에 처음으로 값을 저장하는 것으로, 배열의 경우 생성하면 자동으로 초기화가 된다.

int[] score;
score = new int[]{50, 60, 70, 80, 90}

int[] score = new int[]{50, 60, 70, 80, 90}

int[] score = {50, 60, 70, 80, 90}

- 세 방법 모두 사용 가능하다.

- score 참조변수를 이미 선언 한 상태에서는 new int[]의 생략이 불가능하다는 점을 주의.

 

 

배열의 출력

// 반복문을 이용한 출력
for(int i=0; i<arr.length; i++)
{
	System.out.println(arr[i]);
}

// Array 메소드를 이용한 출력 -> [100, 95, 80, 70] 과 같이 출력해준다.
System.out.println(Arrays.toString(arr));

 

 

 

 

배열의 활용

 

커맨드라인을 통해 입력받기

class Ex5_7 {
	public static void main(String[] args){
    	for(int i=0; i<args.length; i++){
        	System.out.println(args[i]);
        }
    }
}

- 커맨드라인을 통해 입력을 받으면, 입력(String형)이 args배열로 들어간다.

 

<커맨드라인 입력>
C:\jdk1.8\work\ch5>java Ex5_7 abc 123 "Hello World"

결과 :
abc
123
Hello World

- 커맨드라인에서 여러 개의 문자열을 입력받을 때, 공백문자를 기준으로 구분된다.

- 자바가 입력된 문자열들을 가지고 문자열 배열을 만들고, 참조변수인 args에 전달한다.

 

 

2차원 배열

int [][] score = new int[4][3]; // 4행 3열의 2차원 배열 선언
int [][] score = {
			{1,2,3},
                        {4,5,6}
                 }		// 2차원 배열의 선언과 초기화

- 1차원 배열이 여러 개 모인 것.

 

 

String 클래스

- String클래스는 char[] 와 메소드(기능)을 결합한 것이다.

- 문자배열과, 그에 관련된 기능들을 추가해준 것.

 

* String클래스는 내용을 변경할 수 없다. (read only)

String a = "a";
String b = "b";
a = a + b;

// a가 가리키는 주소의 값이 ab로 바뀌는 것이 아니라, ab를 가리키는 주소로 바뀌게 된다.

 

* String클래스의 주요 메소드

char charAt (int index) 문자열의 해당 위치에 있는 문자를 반환한다.
int length () 문자열의 길이를 반환한다.
String substring (int from, int to) 문자열에서 해당 범위의 문자열을 반환한다.
boolean equals (Object obj) 문자열의 내용이 같은지 확인한다.
char[] toCharArray () 문자열을 char[] 로 변환해 반환한다.

 

 

Array 클래스

* Array클래스의 주요 메소드

String Arrays.toString (Arr arr)  1차원 배열을 문자열로 반환한다.
String Arrays.deepToString (Arr2D arr) 다차원 배열을 문자열로 반환한다.
boolean Arrays.equals (Arr arr1, Arr arr2) 두 1차원 배열의 요소가 같은지 확인한다.
boolean Arrays.deepEquals (Arr2D arr1, Arr2D arr2) 두 다차원 배열의 요소가 같은지 확인한다.
Arr Arrays.copyOf (Arr arr, int to) 배열의 0번부터 to번 인덱스까지 복제한다.
Arr Arrays.copyOfRange (Arr arr, int from, int to) 배열의 주어진 범위까지 복제한다.
void Arrays.sort (Arr arr)  배열을 오름차순으로 정렬한다.