백엔드 과정/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();
		}

 

객체배열은 직접 코드를 작성해보고 과제를 푸는 게 더 외우기가 좋았다.

반응형