2024. 8. 4. 10:11ㆍJava/참조타입
배열 타입
배열은 연속된 공간에 값을 나열시키고 각 값에 인덱스를 부여놓은 자료구조이다. 배열은 다음과 같은 특징을 가진다.
1. 배열은 같은 타입의 값만 관리한다.
2. 배열의 길이는 늘리거나 줄일 수 없다.
배열 변수 선언
배열 변수 선언은 '타입[] 변수' 혹은 '타입 변수[]' 형태로 작성할 수 있다. 배열도 객체이기 때문에 배열 변수는 참조 변수이다. 참조할 배열이 없다면 null로 초기할 수 있다.
값 목록으로 배열 생성
배열에 저장될 값의 목록이 있으면 다음과 같이 간단하게 배열을 생성할 수 있다.
타입[] 변수 = {0, 1, 2, 3, 4 ...};
단, 배열 변수를 미리 선언한 후에는 값 목록을 변수에 대입할 수 없다.
타입[] 변수;
변수 = {1,2,3,4,5 ... } //컴파일 에러
new 연산자로 배열 생성
값의 목록은 없더라도 향후 값을 저장할 목적으로 배열을 미리 생성할 수 있다. 이 때 new 연산자를 사용한다.
타입[] 변수 = new 타입[길이];
아래는 new연산자로 배열을 생성하였을 때의 배열 타입 별 기본값이다. String 배열은 모두 null로 초기화된다.
배열 길이
배열의 길이는 배열에 저장할 수 있는 항목의 수를 말한다. 코드에서 배열의 길이를 얻으려면 다음과 같이 행하면 된다.
배열변수.length;
참고로 값을 읽기만 가능하고 값 변경은 불가능하다.
다차원배열
배열은 다른 배열이 대입될 수 있는데 이를 다차원 배열이라고 한다.
위 그림에서 값1, 값3, 값6은 각각 변수[0][0][0] , 변수[0][1][0], 변수[1][0][1]로 읽는다.
값 목록으로 다차원 배열을 생성사려면 배열 변수 선언 시 타입 뒤에 대괄호를 차원의 수만큼 붙이고 값 목록도 차원의 수만큼 중괄호를 중첩시킨다. 설명은 어렵지만 그림을 보면 이해하기 쉽다.
new 연산자로 다차원 배열 생성
new 연산자로 다차원 배열을 생성하려면 변수 선언 시 타입 뒤에 대괄호를 차원의 수만큼 붙이고, new 타입 뒤에도 차원의 수만큼 대괄호를 작성하면 된다.
타입[][] 변수 = new 타입[1차원수][2차원수];
객체를 참조하는 배열
참조 타입 배열은 각 항목에 객체의 번지를 저장한다.
public static void main(String[] args) {
String[] strArray = new String[3];
strArray[0] = "Java";
strArray[1] = "C++";
strArray[2] = "C#";
}
배열 복사
배열은 한 번 생성하면 길이를 변경할 수 없다. 더 많은 저장 공간이 필요하면 배열을 새로 만들고 이전 배열로부터 항목을 복사해야한다.
복사를 하기 위해서는 반복문을 사용하는 방버도 있지만, System.arraycopy()를 이용하면 배열 복사를 쉽게 할 수 있다.
public static void main(String[] args) {
String[] oldStrArray = { "java", "array", "copy"};
String[] newStrArray = new String[5];
System.arraycopy(oldStrArray, 0, newStrArray, 0, oldStrArray.length);
}
배열 항목 반복을 위한 향상된 for문
카운터 변수와 증감식이 없이 항목의 개수만큼 반복하는 방식이다.
public static void main(String[] args) {
int[] scores = {95,71,84,93,87};
int sum = 0;
for(int score : scores){
sum += score;
}
System.out.println("점수 총합 = " + sum);
}
*간단하게 Arrays.toString(배열이름) 메서드를 이용해서 배열을 출력하는 방법도 있다.
Array 클래스
Array클래스는 배열을 다루는데 유용한 메서드를 제공한다.
toString() | 배열의 모든 요소를 문자열로 출력한다. |
deepToString() | N차원 이상의 배열의 모든 요소를 출력한다. |
equals() | 두 배열에 저장된 모든 요소를 비교하여 true false를 반환한다. |
deepEquals() | 다차원 배열을 비교한다. |
copyOf() | 배열 전체를 복사한다. |
copyOfRange(복사할 배열, 시작 범위, 끝 범위) copyOfRange(복사할 배열, 배열.length) copyOfRange(복사할 배열, 끝 범위) |
배열 전체 혹은 일부를 복사해서 새로운 배열을 만들어 반환한다. 끝 범위는 포함되지 않는다. |
sort() | 배열을 정렬할 때 사용한다. |
'Java > 참조타입' 카테고리의 다른 글
[Java] 배열 연습문제 풀이 (0) | 2024.08.04 |
---|---|
[Java] 배열 연습문제 (0) | 2024.08.04 |
[Java] 참조 타입, 문자열, 열거형 (0) | 2024.08.03 |