int [] Arr = new int[10];
- 배열에 대해 다시 짚어보면, 위와 같이 배열을 선언하고 메모리 할당까지 할 수 있었음
- 위 배열은 선 형태로 연속되도록 정의하였기에 1차원 배열이며 가장 기본적인 배열임
2차원 배열
- 여러 개의 1차원 배열로 구성될 수 있음
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
int [][] arr = new int[10][10];
for(int j = 0 ; j < 10 ; j++) {
for(int k = 0 ; k < 10 ; k++) {
arr[j][k] = j * k;
}
}
for(int j = 0 ; j < 10 ; j++) {
for(int k = 0 ; k < 10 ; k++) {
System.out.print(arr[j][k] + "\\t");
} System.out.println();
}
}
}
- 6번째 줄에서 2차원 배열이 선언 및 정의 됨
- ”[ ]”를 연속하여 두 번 사용하여 해당 배열 변수가 2차원 배열임을 명시. 2차원 배열은 가장 왼쪽 위 순서 번호가 (0,0)인 행렬
- 메모리 구조를 살펴보면 1차원 배열에서는 기본 자료형이 입력되어 있던 공간에 배열이 들어 있는 것을 알 수 있음 → 배열의 배열
클래스 배열
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
// 배열의 크기를 관리하는 상수 : ArrayNum
final int ArrayNum = 5;
// 클래스 배열 변수 : CE_Array
// 배열 변수 사이즈 지정( ArrayNum크기 만큼 배열 사이즈 지정 )
ClassExample[] CE_Array = new ClassExample[ArrayNum];
// 각 배열칸의 객체 초기화( new 객체 )
// 생성자를 통해 객체의 iIndex 변수 초기화
for(int j = 0 ; j < ArrayNum ; j++) {
CE_Array[j] = new ClassExample(j);
}
// 객체 사용( Print_iIndex 메소드 사용 )
for(int j = 0 ; j < ArrayNum ; j++) {
CE_Array[j].Print_iIndex();
}
}
}
class ClassExample {
int iIndex;
public ClassExample(int i) {
iIndex = i;
}
public void Print_iIndex() {
System.out.println(iIndex);
}
}
- 27~마지막 줄: ClassExample은 멤버변수 iIndex 와 Print_iIndex 메소드를 가지고 있고, main 메소드에서 이 ClassExample 클래스를 활용하여 클래스 배열을 만들고 사용하고 있음
- 8번째 줄: ArrayNum 는 배열의 길이를 지정하는 상수
- 배열을 사용할 때 반복문과 함께 사용하는 경우가 많아 위 예시처럼 배열의 길이를 상수로 지정하는 것이 일반적 → 소스코드 유지보수 용이
- 12번째 줄: 클래스 배열 변수를 선언하고 배열 크기 지정(객체가 생성되는 것은 아님을 유의)
- 클래스 배열 변수 선언하며 new 를 사용했지만, 이는 생성자를 콜하는 것이 아니기 때문에 객체를 생성하는 것 또한 아님
- 12번째 줄은 오직 배열 크기를 지정해주는 역할만 수행, 객체는 17번째 줄에서 생성됨 반복
- 반복문과 함께 각 배열칸에 new ClassExample(j) 을 사용하여 각 객체에 메모리 할당 → 둘 다 new 를 사용하는 소스코드지만 역할이 다르므로 사용에 유의
- 21~23번째 줄: 배열에 생성된 객체의 메소드를 사용하는 소스코드. 일반적인 배열에서 데이터를 불러왔던 것처럼 배열이름[인덱스] 형태로 사용되며, 이 때 불러와진 데이터는 클래스이므로 ‘ . ‘ 메소드를 붙여 사용할 수 있음
기본 자료형을 사용하는 배열과 비교하면, 클래스 배열은 생성자를 사용해주는 부분이 추가되므로 생성자 사용시에만 유의하면 괜찮음
'바로 실행해보면서 배우는 java'를 학습하며 정리한 문서
'Java' 카테고리의 다른 글
Java 문법(10) - 다형성 (0) | 2022.02.08 |
---|---|
Java 문법(9) - 상속, 추상화 (0) | 2022.02.08 |
Java 문법(7) - 데이터 입출력 (0) | 2022.02.07 |
Java 문법(6) - 클래스와 객체, 접근제한자 (0) | 2022.02.07 |
Java 문법(5) - 배열 기초, String (0) | 2022.02.06 |