백엔드 과정/Java
[Java] day12. 객체배열
mim
2022. 1. 4. 18:43
반응형
객체배열
레퍼런스 변수에 대한 배열
동일한 타입의 여러 인스턴스들을 배열로 관리할 수 있다.
생선한 인스턴스도 배열을 이용해서 관리하면
동일한 타입의 여러 개 인스턴스를 각각 취급하지 않고 연속 처리할 수 있어서 유용하다.
또한 반환값은 1개의 값만 반환할 수 있기 때문에
동일한 타입의 여러 인스턴스를 반환해야 하는 경우 객체 배열을 이용할 수 있다.
선언
클래스명[] 배열명;
클래스명 배열명[];
Product[] pArr;
Product pArr[];
할당
배열명 = new 클래스명[배열크기];
pArr = new Product[3];
선언과 동시에 할당
클래스명 배열명[] = new 클래스명[배열크기];
Product pArr[] = new Product[3];
인덱스를 이용한 초기화
배열명[i] = new 클래스명();
pArr[0] = new Product("TV", 300);
선언과 동시에 할당 및 초기화
클래스명 배열명[] = {new 클래스명(), new 클래스명()};
Prouct[] pArr = {
new Product ("TV", 300)
,new Product ("스피커" , 20)
,new Product ("모니터" , 100)
};
/* 자동차 5대 인스턴스를 생성 후 모든 인스턴스가 최고 속도로 달리게 한다.*/
Car car1 = new Car("페라리",300);
Car car2 = new Car("람보르기니",350);
Car car3 = new Car("롤스로이드",250);
Car car4 = new Car("부가티베이론",400);
Car car5 = new Car("포터",500);
car1.driveMaxSpeed();
car2.driveMaxSpeed();
car3.driveMaxSpeed();
car4.driveMaxSpeed();
car5.driveMaxSpeed();
동일한 타입의 인스턴스를 여러 개 사용해야 할때 객체배열을 이용하면 보다 효율적으로 사용이 가능하다.
위에 작성한 코드를 더 간단하게 작성해보면 아래와 같다.
/* car 타입의 인스턴스 주소를 보관할 5칸짜리 배열 할당 */
Car[] carArrays = new Car[5]
/*각 인덱스는 기본값 null로 초기화 되어 있기 때문에 인덱스 별로 인스턴스를 생성해야한다.*/
carArrays[0] = new Car("페라리",300);
carArrays[1] = new Car("람보르기니",350);
carArrays[2] = new Car("롤스로이드",250);
carArrays[3] = new Car("부가티베이론",400);
carArrays[4] = new Car("포터",500);
배열이기 때문에 반복문을 활용하거나 향상된 for문을 사용할 수 있다.
/*배열이기 때문에 반복문을 활용할 수 있다.*/
for (int i = 0; i < carArrays.length; i++) {
carArrays[i].driveMaxSpeed();
}
/* 객체배열도 할당과 동시에 초기화 할 수 있다.*/
Car[] carArrays2 = {
new Car ("페라리" ,300)
, new Car ("람보르기니" ,350)
, new Car ("롤스로이드" ,250)
, new Car ("부가티베이론" ,400)
, new Car ("포터" ,500)
};
/*향상된 for문도 사용이 가능하다.*/
for( Car c : carArrays2 ) {
c.driveMaxSpeed();
}
객체배열은 직접 코드를 작성해보고 과제를 푸는 게 더 외우기가 좋았다.
반응형