학생을 모델링하여 만든 학생 클래스로 여러 학생 객체를 생성하고 정보를 저장할 수 있습니다. 그런데 이렇게 생성된 학생 객체를 다음과 같이 각각의 변수에 저장하면 관리하기도 어렵고 데이터를 조회하는 것도 번거로워집니다.
Student stu1 = new Student("홍길동1", 10, "서울1");
Student stu2 = new Student("홍길동2", 10, "서울2");
...
그래서 필요한 것이 배열입니다. 객체를 배열로 관리하면 다량의 데이터를 효율적으로 관리할 수 있게 됩니다. 기본형 데이터를 배열로 관리하는 것에 비해 처음 이해가 어려울 수 있지만, 매우 중요한 개념이므로 잘 정리해 놓는 것이 좋습니다.
학생 클래스를 만들고 이를 이용해 학생 객체를 생성한 후 배열로 저장하는 프로그램을 만들어 보겠습니다.
public class Student {
private String name;
private int age;
private String address;
public Student() {}
public Student(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
public class TestStudent {
public static void main(String[] args) {
//1.new 이용
Student [] arr1 = new Student[3]; //Student 클래스 타입 배열, 방 3개
arr1[0] = new Student("홍길동1", 10, "서울1"); //Student 객체 생성 후 각 방에 주소 저장(참조)
arr1[1] = new Student("홍길동2", 10, "서울2");
arr1[2] = new Student("홍길동3", 10, "서울3");
//2.리터럴 이용
Student [] arr2 = { new Student("홍길동1", 10, "서울1"),
new Student("홍길동2", 10, "서울2"),
new Student("홍길동3", 10, "서울3") };
//3.new+리터럴 이용
Student [] arr3 = new Student[] { new Student("홍길동1", 10, "서울1"),
new Student("홍길동2", 10, "서울2"),
new Student("홍길동3", 10, "서울3") };
//데이터 출력
for (Student stu : arr3) {
System.out.println("생성된 객체 주소: "+stu); //각 방의 데이터를 꺼내오므로 참조된 객체의 주소 출력
}
for (Student stu : arr3) {
System.out.println("이름: "+stu.getName()); //각각 참조된 클래스 객체 내 get함수로 이름 꺼내옴
}
}
}
Student 클래스 타입의 배열을 생성하고, 각 방에 각각 Student 객체(의 주소)를 저장하고 있습니다. 기본형 데이터와 마찬가지로 배열 생성은 세 가지 방법으로 가능합니다. 데이터 타입이 클래스 객체이므로 각 방에 들어가는 데이터도 클래스 객체라는 점만 다를 뿐, 과정은 동일합니다. 또한, 기본형 데이터가 아닌 모든 참조형 데이터는 변수에 저장할 때 실제 데이터 값이 아닌 주소가 저장됩니다. 여기서 arr[0], arr[1], arr[2] 각 방에 저장되는 것은 Student라는 클래스 객체 타입이므로, 각 방은 참조변수처럼 각 Student 객체의 주소를 저장하게 됩니다. 그래서 for문을 이용해 arr3[0], arr3[1], arr3[2]의 값을 각각 꺼내오면, 각 방에 저장된 Student 객체의 주소들이 출력됩니다. 실제 데이터를 출력하기 위해 각 객체가 가지고 있는 get함수를 이용해 이름을 꺼내오고 있습니다. 이렇게 배열로 객체들을 관리하게 되면 데이터의 관리가 훨씬 수월해 집니다.
이상으로 객체를 배열로 관리하는 방법을 정리해 보았습니다.
'JAVA' 카테고리의 다른 글
[JAVA] 객체와 클래스 - static 키워드 (0) | 2022.05.25 |
---|---|
[JAVA] call by value 와 call by reference (0) | 2022.05.24 |
[JAVA] 객체와 클래스 - 정보 은닉화, 캡슐화(encapsulation) (0) | 2022.05.22 |
[JAVA] 객체와 클래스 - 메소드(method) (0) | 2022.05.22 |
[JAVA] 객체와 클래스 - 생성자, 생성자 오버로딩 (0) | 2022.05.22 |
댓글