프로그래밍 언어/JAVA

객체 배열

· 코딩마이데이

객체 배열

기본 타입 데이터뿐 아니라, 객체를 원소로 하는 객체 배열도 만들 수 있습니다.

자바의 객체 배열은 객체에 대한 레퍼런스를 원소로 갖는 배열입니다.

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 객체를 생성하여 레퍼런스 배열에 하나씩 대입합니다.

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