객체 배열
객체 배열
기본 타입 데이터뿐 아니라, 객체를 원소로 하는 객체 배열도 만들 수 있습니다.
자바의 객체 배열은 객체에 대한 레퍼런스를 원소로 갖는 배열입니다.
Circle [] c;
c = new Circle[5];
for (int i = 0; i < c.length; i++) // c.length는 배열 C의 크기로서 5
c[i] = new Circle[i];
for (int i = 0; i < c.length; i++) // 배열에 있는 모든 Circle 객체의 면적 출력
System.out.print((int)(c[i].getArea()) + " ");
배열 선언 및 생성
객체 배열을 만들기 위해서는 3단계가 필요합니다.
배열에 대한 레퍼런스 선언
다음은 Circle 클래스의 배열에 대한 레퍼런스 변수 c를 선언합니다.
Circle [] c;
이 선언문은 레퍼런스 변수 c인 선언할 뿐, 배열을 생성하는 것은 아닙니다. 그러므로 다음과 같이 배열의 원소 개수를 지정해서는 안됩니다.
Circle[5] c; // 오류. 배열의 크기를 지정하면 컴파일 오류 발생
레퍼런스 배열 생성
두 번째로 5개의 레퍼런스를 원소로 하는 배열을 생성합니다. 배열의 원소는 객체가 아니러 레퍼런스입니다.
c = new Circle[5]; // Circle 객체에 대한 레퍼런스 5개 생성
객체 생성
다음 코드를 이용하여 Circle 객체를 하나씩 생성하여 배열 c[]의 레퍼런스에 대입합니다.
for (int i = 0; i < c.length; i++) // c.length는 배열 c의 크기로서 5
c[i] = new Circle(i); // i번째 Circle 객체 생성
배열의 크기만큼 Circle 객체를 생성하여 레퍼런스 배열에 하나씩 대입합니다.

배열의 원소 객체 접근
배열 c의 i번째 객체에 접근하기 위해서는 c[i] 레퍼런스를 사용하면 됩니다.
for (int i = 0; i < c.length; i++)
System.out.print((int)(c[i].getArea()) + " ");
Circle 객체 배열 만들기
class Circle {
int radius;
public Circle(int radius) {
this.radius = radius;
}
public double getArea() {
return 3.14 * radius * radius;
}
}
public class CircleArray {
public static void main(String[] args) {
Circle [] c; // Circle 배열에 대한 레퍼런스 c 선언
c = new Circle[5]; // 5개의 레퍼런스 배열 생성
for (int i = 0; i < c.length; i++) // 배열의 개수 만큼
c[i] = new Circle(i); // i번째 원소 객체 생성
for (int i = 0; i < c.length; i++) // 배열의 모든 Circle 객체의 면적 출력
System.out.print((int) (c[i].getArea()) + " ");
}
}
실행 결과
0 3 12 28 50
객체 배열 만들기
import java.util.Scanner;
class Book {
String title, author;
public Book(String title, String author) { // 생성자
this.title = title;
this.author = author;
}
}
public class BookArray {
public static void main(String[] args) {
Book[] book = new Book[2];
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < book.length; i++) { // book.length = 2
System.out.print("제목>>");
String title = scanner.nextLine();
System.out.print("저자>>");
String author = scanner.nextLine();
book[i] = new Book(title, author); // 배열 원소 객체 생성
}
for (int i = 0; i < book.length; i++)
System.out.println("(" + book[i].title + ", " + book[i].author + ")");
scanner.close();
}
}
실행 결과
제목>>사랑의 기술
저자>>에리히 프롬
제목>>시간의 역사
저자>>스티븐 호킹
(사랑의 기술, 에리히 프롬)
(시간의 역사, 스티븐 호킹)
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
| 객체의 소멸과 가비지 컬렉션 (0) | 2025.02.02 |
|---|---|
| 메소드 활용 (1) | 2025.02.01 |
| 생성자 (1) | 2025.01.30 |
| 자바 클래스 만들기 (0) | 2025.01.29 |
| 객체 지향과 자바 (0) | 2025.01.28 |