[배열 타입(Array Type)]


배열 선언

1) 타입[ ]   변수;

2) 타입   변수[ ];

와 같이 두가지 형태로 선언될 수 있습니다.


예)

(값 목록으로 배열 생성)

-> String[] name = {"최진우", "정보통신공학", "수원"};

(new 연산자로 배열 생성)

-> int[] age = null;

age = new int[5];

//길이가 5인 int형 배열 선언.


String값을 int형으로 변환

예) String name = "5";

int num = Integer.parseInt(name);

--> num을 출력으로 찍어보면 숫자 5가 출력됩니다.

이 때, name에는 정수로 변환할 수 있는 문자열만 주어져야 NumberFormatException(실행 예외)이 발생하지 않게 됩니다.



객체를 참조하는 배열

기본타입(Primitive Type - 8가지) 배열은 각 항목에 직접 값을 갖고있지만, 참조타입(클래스, 인터페이스) 배열은 각 항목에 객체의 번지를 가지고 있습니다.

예를 들어 String은 클래스 타입이므로 String[] 배열은 각 항목에 문자열이 아니라, String 객체의 주소를 가지고 있습니다.

예) String[] strArray = new String[3];

strArray[0] = "Java";

strArray[1] = "Python";

strArray[2] = "C";


이때, 각 배열 항목간에 문자열을 비교하기 위해서는 == 연산자 대신 equals() 를 사용해야 합니다.

== 는 객체의 번지비교이기 때문에 문자열 비교에 사용할 수 없다고 지난 String 포스팅에서 말씀드린 바 있습니다.


배열 복사

배열은 한번 생성하면 크기를 변경할 수 없으므로 만약 공간이 더 필요하다면 보다 큰 배열을 새로 만들고 이전 배열의 값을 복사해야합니다.

크게 두가지 방법으로 보면, 첫번째는 for문을 이용해 일일이 넣어주거나, 두번째로 System.arraycopy() 메소드를 사용하는 것입니다.

for문을 이용한 부분은 C와 크게 다르지 않으므로 생략하고 arraycopy()를 이용하는 부분을 살펴보겠습니다.


예) String[] oldName = {"Java", "Python", "C"};

String newName = new String[5];

System.arraycopy(oldName, 0, newName, 0, oldName.length);

(* oldName.length 는 oldName 배열의 길이입니다.)

이 때, oldName은 길이가 3이고, 새로 만든 newName은 길이가 5입니다.


그리고 arraycopy를 하게 되면 아래와 같이 표현됩니다.



** 향상된 for문 **

일반적으로 for문은 C의 문법과 같이,

ex) for(int i=0; i<10; i++) {

...

}

와 같이 사용할 수 있습니다.

이때, 자바에서는 위의 for문에 더하여

ex) for( 타입변수 : 배열) {

실행문;

}

과 같은 형태로도 사용할 수 있습니다.

배열에서 가져올 항목이 존재할 경우에는 타입변수에 그 값을 넣고 실행문을 실행하고, 이 과정을 for문 안에서 반복합니다.

만약 배열에서 가져올 항목이 없을 경우에는 for문 밖으로 빠져나오게 됩니다.


WRITTEN BY
SiriusJ

,