2) 객체들의 배열

· 객체들의 배열

 

아래의의 alphabet 배열을 살펴보자.

 

배열 자체가 객체라는 것을 기억하자.  따라서 alphabet 변수는 위의 그림과 같이 객체를 참조하고 있다.

이번에는 String 객체를 보자

 


String[] words = new String[4];


 

위와 같이 선언하면 String 객체를 4개 담고 있는 배열이 선언된다. 하지만 배열의 각 공간에 String 객체를 생성하지는 않는다.

단지 String 객체의 참조들을 저장하기 위한 배열을 생성할 뿐이다.

 

그러면 Stirng 객체를 배열에 대입하여 보자.

 

words[0] = "Hello";
words[1] = "Java";

 

문자열을 바로 대입하였지만, 내부적으로 String 객체가 생성되어 문자열을 담는다.

그러면 배열의 해당 인덱스의 주소가 해당 문자열 String 객체를 참조하게 된다.

 

 

String 외의 다른 객체들의 배열도 위와 같이 배열의 인덱스는 객체의 주소를 참조하는 것이다.

 

· 각 원소에 들어가는 객체는 따로 생성하여야 한다.

cars[0] = new Cars();

cars[1] = new Cars();

01   class Car {
02   	public int speed; // 속도
03   	public int gear; // 주행거리
04   	public String color; // 색상
05   	public Car() {
06   		speed = 0;
07   		gear = 1;
08   		color = "red";
09   	}
10   	public void speedUp() { // 속도 증가 메소드
11   		speed += 10;
12   	}
13   	public String toString() { // 객체의 상태를 문자열로 반환하는 메소드
14   		return "속도: " + speed + " 기어: " + gear + " 색상: " + color;
15   	}
16   }
17   public class CarArrayTest {
18          public static void main(String[] args) {
19                final int NUM_CARS = 5;
20                Car[] cars = new Car[NUM_CARS];
21                for (int i = 0; i < cars.length; i++)
22                       cars[i] = new Car();
23                for (int i = 0; i < cars.length; i++)
24                       cars[i].speedUp();
25                for (int i = 0; i < cars.length; i++)
26                       System.out.println(cars[i]);
27           }
28   }

 

· 예제를 연습해 봅시다