헬린코린이
[JAVA] 객체 배열 본문
객체 배열에 대해서 알아보겠습니다.
객체 배열은 말 그대로 객체(인스턴스)를 배열로 만든 것이다.
배열의 전제조건으로는
1. 관련된 데이터인가
2. 같은 자료형인가
3. 개수가 정확히 정해져있나
이 조건만 맞으면 객체를 배열로 만들 수 있다.
Player p1 = new Player();
Player p2 = new Player();
Player p3 = new Player();
Player p4 = new Player();
Player p5 = new Player();
Player p6 = new Player();
Player p7 = new Player();
7개의 인스턴스를 생성하였다 만일 더 필요하다면 저걸 더 복사 붙여넣기 하면 되겠지만
더 쉽게 배열로 만들어버리면 된다
관련된 데이터이고
같은 자료형이고
개수가 7개로 정해져 있다면
바로 이렇게
Player[] data = new Player[7];
for(int i=0; i<data.length; i++) {
data[i]=new Player();
}
7개의 인스턴스를 단 4줄 만으로 해결할 수 있다 더 많은것이 필요하다면 숫자7만 바꿔주면 된다.
출력하는 것은 일반 배열 출력했을 때와 마찬가지로 for문을 이용하면 된다.
배열은 앞서 배웠기에 어떻게 객체를 배열로 만드는 방법만 알면 이해하기 쉬울 것이다.
간단한 예제를 보고 끝내겠다
package class01;
import java.util.Scanner;
public class Test05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Monster[] ms = new Monster[3];
String name = null;
for(int i =0; i<ms.length; i++) {
System.out.print("포켓몬 입력: ");
name = sc.nextLine();
int level=(int)(Math.random()*9+5);
ms[i]= new Monster(name,level);
}
while(true) {
System.out.println("1~3.게임 4.목록 5.종료");
System.out.print("입력: ");
int num = sc.nextInt();
if(num>0 && num<=3) {
ms[num-1].game();
continue;
}else if(4==num){
for(Monster v : ms)
v.info();
}else if(5==num) {
break;
}else {
System.out.println("잘못된 입력입니다.");
}
}
}
}
class Monster2{
String name;
int level;
int exp;
void info() {
System.out.println(name+" lv."+level+" ["+this.exp+"/100]");
}
void game() {
this.exp+=70;
if(this.exp>100) {
this.level++;
this.exp-=100;
System.out.println(this.name+", 레벨업");
}
}
Monster2(String name){
this(name, 5);
}
Monster2(String name, int level){
this.name = name;
this.level = level;
this.exp = 0;
}
}
포켓몬볼에 포켓몬을 넣고 게임을 시켜 현재 레벨이 얼마이고 경험치가 얼마인지 출력하는 예제이다.
Comments