Chapter 9. 객체배열

SeungHyun Son·2021년 6월 26일
0

본 내용은 KH정보교육원 에서 제공한 교재 내용을 개인적인 공부를 위한 목적으로 작성되었습니다.
만약 아래의 내용을 무료로 배부하거나 상업적으로 이용할 경우 법적 처벌을 받을 수 있음을 경고합니다.

객체배열이란?

많은 수의 객체를 배열로 관리하는 것으로 객체를 배열로 선언하여 생성한 후 각 인덱스에 new연산자를 통해서 객체를 생성하고 대입하고 배열의 인덱스를 통하여 객체에 접근하여 수정 / 활용하는 것을 말한다.

객체배열의 선언

객체배열의 선언은 기본자료형 베열의 선언과 비슷하다. 아래 예시와 같이 기본자료형이 들어가는 부분에 사용자 정의 자료형 즉 객체명을 선언하면 된다.

클래스명 배열명[] = new 클래스명 [객체 수]; // 객체 배열선언

객체배열의 대입

객체배열 선언 후 객체를 대입할 때에는 new라는 연산자를 통해서 객체를 생성한 후 배열의 인덱스에 대입하는 방법이 있고, { } 안에서 쉼표(,)를 구분자로 지정할 수 있다.

// 인덱스를 이용하여 대입
객체배열명[숫자] = new 클래스명();
// 선언과 동시에 대입
클래스명 배열이름[] = {new 클래스명(), new 클래스명(), ......};

객체배열의 구조

객체배열을 선언하면 레퍼런스형(사용자 자료형)을 보관할 수 있는 선언한 배열명의 변수가 생성이 되고 이 변수는 new 연산자를 통해 생성된 배열을 값으로 가지고 있음.
new 연산자로 생성된 배열은 객체를 보관할 수 있는 레퍼런스형(사용자 자료형) 변수를 만들고 배열이기 때문에 각 변수에 인덱스 번호를 할당한다. 이 인덱스가 할당된 변수 안에 생성되는 객체가 저장되는 구조이다.

객체배열에는 객체를 보관하기 때문에 배열 안에 값을 넣을 때는 반드시 new 연산자를 통해서 생성한 뒤에 대입해야 한다.

객체배열의 호출

객체 배열도 하나의 배열이기 때문에 자료에 접근할 때는 인덱스를 활용하여 접근을 한다. 변수명[인덱스]로 객체에 접근하고 다시 해당 객체의 멤버변수나, 메소드에 접근하려면 접근연산자 "."을 이용하여 접근한다.
간단히 이야기하면 변수명[인덱스]를 하나의 객체변수로 생각하면 된다. 그렇게 생각한 후 객체변수가 자신의 멤버변수와 메소드에 접근한 방법을 생각하면 쉽게 자료에 접근할 수 있을 것이다.

oop.sample.Person.java

01 package oop.sample;
02 
03 public class Person {
04     private String name; // 멤버필드
05     private int age; // 멤버필드
06     private char gender; // 멤버필드
07
08     // 기본 생성자
09     public Person() { }
10
11     // 매개 변수가 있는 생성자
12     public Person(String name, int age, char gender) {
13         this.name = name;
14         this.age = age;
15         this.gender = gender;
16     }
17      
18     // getter, setter 메소드
19     public String getName() { return name; }
20     public void setName() { this.name = name; }
21
22     public int getAge() { return age; }
23     public void setAge() { this.age = age; }
24
25     public char getGender() { return gender; }
26     public void setGender() { this.gender = gender; }

oop.test.TestArray.java

01 package oop.test;
02
03 import oop.sample.Person;
04
05 public class TestArray {
06     public static void main(String[] args) {
07         Person[] list = new Person[3]; // 3명을 보관할 수 있는 객체배열 선언
08         int[0] = new Person("김개똥", 19, '남');
09         int[1] = new Person("김말똥", 20, '남');
10         int[2] = new Person("김소똥", 22, '여');
11         // 각 객체의 멤버에 접근 이름출력
12         for(int i = 0; i < list.length; i++) {
13             System.out.println(list[i].getName());
14         }
15     }
16 }
______
김개똥
김말똥
김소똥

0개의 댓글

관련 채용 정보