나의 IT일지
객체 배열 본문
객체는 클래스를 통해 특징이 있는 존재나 개념을 변수나 메서드 등으로 구현해서 만든 대상으로, 참조변수를 만든 뒤, new연산자를 통해 객체를 생성해서 참조변수에 해당 객체의 주소를 저장해서 객체를 호출한다.
클래스명 참조변수 = new 클래스명();
그리고 객체도 클래스를 통해 여러 개 만들 수 있는데, 이때 만들어진 객체들은 같은 특징을 가지지만 서로 다른 객체가 된다.
class Aclass{
int x;
void fun1() {
System.out.println(x);
}
}
package project0411;
public class Code1 {
public static void main(String[] args) {
Aclass a1 = new Aclass();
Aclass a2 = new Aclass();
Aclass a3 = new Aclass();
a1.x = 10;
a2.x = 20;
a3.x = 30;
a1.fun1();
a2.fun1();
a3.fun1();
}
}
이렇게 하나의 클래스를 통해 여러개의 객체를 생성할 수 있다. 그런데 객체를 묶어서 관리해야 하는 경우에, 객체를 따로따로 생성하게 되면, 객체를 관리하기 어렵다. 그래서 객체를 한번에 생성하고 묶어서 관리하는 방법인 객체 배열에 대해서 알아야 한다.
객체 배열
객체 배열이란 같은 클래스로 만들어진 참조변수들의 집합으로, 일반 배열과 달리 객체 배열의 요소는 참조변수로 구성되어 있다.
클래스명 배열명[ ] = new 클래스명[크기];
위의 구조는 객체배열을 생성하는 구조로, 객체의 주소를 저장할 수 있는 참조변수를 생성한다. 이때 생성 당시에는 해당 참조변수에 어떠한 값도 가지고 있지 않다. 왜냐하면 해당 구조는 배열을 만드는 구조이기에, 해당 배열의 내용은 직접 값을 저장해야 한다.
package project0411;
public class Code1 {
public static void main(String[] args) {
Aclass a[]=new Aclass[3];
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
}
}
위의 코드를 보면, 배열을 선언한 뒤, 해당 요소들에게 객체를 생성하며, 각 요소들은 서로 다른 객체를 가리키는 것을 확인할 수 있다.
게다가 배열은 요소마다 인덱스값을 부여받기 때문에, 요소들에게 객체를 생성하는 것을 반복문을 사용할 수 있다.
package project0411;
public class Code1 {
public static void main(String[] args) {
Aclass a[]=new Aclass[3];
for(int i=0 ; i<3;i++) {
a[i] = new Aclass();
}
a[0].x=10;
a[0].fun1();
a[1].x=200;
a[1].fun1();
a[2].x=300;
a[2].fun1();
}
}
위의 구조는 반복문을 통해 객체를 생성한 뒤 해당 배열의 각 요소에 저장하며, "객체배열명[인덱스].필드명"을 통해 해당 객체의 필드로 접근하는 것을 확인 할 수 있으며, "객체배열명[인덱스].메서드명"을 통해 해당 객체의 메서드를 실행하는 것을 확인할 수 있다.