객체 배열의 사용 목적과 구조를 이해하여 객체 배열을 생성하고 개발에 활용할 수 있다.
객체 배열은 레퍼런스 변수에 대한 배열이다. 생성한 인스턴스를 배열을 이용해서 관리하면
동일한 타입의 여러 개 인스턴스를 각각 취급하지 않고 연속 처리할 수 있어 유용하다.
또한 반환값은 1개의 값만 반환할 수 있기때문에 동일한 타입의 여러 인스턴스를 반환해야 하는 경우
객체 배열을 사용할 수 있다.
Car 라는 클래스 타입의 객체를 car1 car2 각각의 객체로 생성했을 때 동일한 기능을 수행할 때
모든 객체를 일일히 동작해줘야 한다. car1.start(); car2.start(); ..
이러한 Car타입의 객체를 배열에 담으면 for문을 이용해 하나씩 접근하여 동일한 메소드를 처리할 수 있다.
//향상된 for문을 이용해 모든 car 객체가 start() 메소드를 수행할 수 있다.
for(Car c : carArrays ) {
c.start();
}
객체 배열의 구조를 이해할 수 있다.
기본적인 배열이 같은 자료형을 할당받은 인덱스 크기만큼 가지고 있는 것처럼
객체 배열은 레퍼런스 변수에 대한 배열로, 할당된 크기안에 객체를 담고 있다.
객체 배열을 선언 및 할당하여 객체를 저장할 수 있다.
선언
클래스명[] 배열명;
클래스명 배열명[];
Car[] carArrays;
Car carArrays[];
할당
배열명 = new 클래스명[배열크기]
carArrays = new Car[5];
객체 배열을 선언과 동시에 초기화 하여 사용할 수 있다.
클래스명 배열명[] = new 클래스명[배열크기];
Car[] carArrays = new Car[5];
선언과 동시에 초기화
Car[] carArrays2 = {
new Car ("페라리" ,300)
, new Car ("람보르기니" ,350)
, new Car ("롤스로이드" ,250)
, new Car ("부가티베이론" ,400)
, new Car ("포터" ,500)
};
객체 배열 연속 처리 시 반복문을 활용할 수 있다.
for (int i = 0; i < carArrays.length; i++) {
carArrays[i].driveMaxSpeed();
}
향상된 for문도 사용이 가능하다.
for( Car c : carArrays2 ) {
c.driveMaxSpeed();
}
객체 배열을 인자나 리턴값으로 사용할 수 있다.
/**<pre>
* 여러 명의 회원 정보를 등록
* </pre>
* */
public void signUpMembers() {
/* 5명의 회원 정보를 담을 객체 배열 생성*/
MemberDTO[] members = new MemberDTO[5];
/* 5명의 회원 정보를 각 인덱스에 할당*/
members[0] = new MemberDTO(1, "user01", "pass01", "김영희", 22, '여');
members[1] = new MemberDTO(2, "user02", "pass02", "홍길동", 20, '남');
members[2] = new MemberDTO(3, "user03", "pass03", "박진희", 24, '여');
members[3] = new MemberDTO(4, "user04", "pass04", "이순진", 26, '남');
members[4] = new MemberDTO(5, "user05", "pass05", "한지민", 28, '여');
/*회원 정보를 입/출력할 용도의 memberInserManager 클랙스 작성*/
MemberInserManager memberInserManager = new MemberInserManager();
memberInserManager.insert(members);
}
위 코드에서 회원정보DTO클래스를 사용하여 객체 배열을 생성한 뒤
각 인덱스에 회원정보 매개변수를 전달하여 배열을 초기화함.
이렇게 만들어진 객체 배열을 회원정보를 입출력하는 용도의 메소드의 매개변수로
members 라는 객체 배열을 전달할 수 있다.
/**<pre>
* 여러 명의 회원 정보를 한 번에 등록할 수 있는 기능 제공
* </pre>
* @param members 회원 정보를 객체 배열로 전달
* */
public void insert(MemberDTO[] members) {
System.out.println("회원을 등록합니다.");
/*향상된 for문*/
for (MemberDTO member : members) {
System.out.println(member.getName() + "님을 회원 등록에 성공했습니다.");
}
System.out.println("총 " + members.length + "명의 회원 등록이 되었습니다.");
}
이 객체배열을 전달받은 메소드 안에서 향상된 for문을 통해 객체 배열의 인덱스에 하나씩 접근하여
member.getName()+ "회원 등록에 성공했습니다. " 라는 메세지를 출력할 수 있다.
이로써 객체 배열을 만든 뒤 이를 매개변수로 전달 할 수있음을 확인할 수 있다.
'백엔드 과정 > Java' 카테고리의 다른 글
[Java] 다형성 개념 복습 / 추상클래스와 인터페이스 (0) | 2022.01.17 |
---|---|
[Java] 상속 개념 복습 (0) | 2022.01.15 |
[Java] 클래스와 객체 개념 복습 (0) | 2022.01.14 |
[Java] day22. 입출력IO 보조스트림/ 직렬화 (0) | 2022.01.14 |
[Java] day22. 입출력IO / Stream / File (0) | 2022.01.12 |