무지개 곰
무지개곰의 성장이야기
무지개 곰
250x250
  • 분류 전체보기
    • 블록체인 공부
      • BlockChain
      • Ethereum
    • IT공부
      • Java
      • JavaScript
      • HTML + CSS
      • React
      • 프로그래머스 (TypeScript)
    • 독서
    • 영어 공부
      • 1일 1 작문
      • 영어 짧은 글
    • 홍보
hELLO · Designed By 정상우.
무지개 곰
IT공부/Java

[Java] Java의 객체 배열 이해하기

[Java] Java의 객체 배열 이해하기
IT공부/Java

[Java] Java의 객체 배열 이해하기

2022. 7. 8. 12:00
728x90

객체 배열 이해하기

  • 객체 배열 선언 방법
  • 배열 복사하기

객체 배열 선언 방법

객체 배열을 배우기 위하여 객체를 위한 클래스를 먼저 만들겠습니다.

public class Student{
    private string name;
    private int age;
    
    public Student(){
    }
    public Student(String name, int age){
        this.name=name;
        this.age=age;
    }
    public void setName(String name){
    	this.name=name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return age;
    }
}

위와 같은 클래스를 만들었을 때 학생이 여러 명일 경우 배열로 저장을 하도록 하겠습니다.

public class MakeArray{
    public static void main(String[] args){
        Student[] student = new Student[5];//student배열 생성
        
        //기본생성자로 배열의 공간에 값을 넣는 방법
        student[0] = new Student();
        student[0].setName("홍길동");
        student[0].setAge(12);
        
        //객체의 변수에 값을 바로 넣어주는 생성자를 이용한 방법
        student[1] = new Student("이방인",13);
    }
}

객체 배열의 경우 배열을 생성하면 변수를 선언한 것이 아니라 변수 이름만 만들었다고 생각하시면 됩니다. 비유를 하자면 아래의 형태만 선언되었다고 비유를 들 수 있습니다.

Student student[0];
Student student[1];
Student student[2];
Student student[3];
Student student[4];

따라서 변수에 값을 넣기 위하여 set메서드를 사용을 하거나 생성자를 이용하여 값을 넣어주어야 합니다.


객체 배열 복사하기

배열을 복사하는 방법을 앞의 글에서 arraycopy를 이용하여 설명드렸습니다. 하지만 객체 배열의 경우 배열을 복사하는 방법은 조금 다릅니다.

Student[] student1 = new Student[3];
Student[] student2 = new Student[3];

student1[0] = new Student("홍길동",10);
student1[1] = new Student("이방인",20);
student1[2] = new Student("김삿갓",30);

System.arraycopy(student1,0,student2,0,3);

위의 예시와 같이 arraycopy를 사용하는 경우 student2 배열은 student1의 배열의 주소 값을 복사하여 가지고 옵니다. 따라서 각각의 배열 속 요소를 복사하는 것이 아니라 student1[0]과 student2[0]의 주소 값이 같도록 되는 것입니다. 따라서 student1 배열의 요소 값을 바꾸면 student2 배열의 요소 값도 바뀌게 됩니다.

student1[0] 주소값 : Student@00000001 "홍길동",10
student2[0]
student1[1] 주소값 : Student@00000002 "이방인",20
student2[1]
student1[2] 주소값 : Student@00000003 "김삿갓",30
student2[2]

복사를 할 때 주소 값이 아닌 요소 값만 복사를 하여 각각의 배열 요소 값을 변경하여도 서로 영향을 주지 않기 위해서는 아래와 같은 방법을 사용하여야 합니다.

student2[0].setName(student1[0].getName);
student2[0].setAge(student2[0].getAge);

이러한 식으로 각각의 값을 입력을 하여야 주소 값이 다르기에 영향을 주지 않습니다. for문을 이용하면 쉽게 복사를 할 수 있습니다.

for(int i=0;i<student1.length;i++){
    student2[i].setName(student1[i].getName);
    student2[i].setAge(student2[i].getAge);
}
728x90
저작자표시 비영리 변경금지 (새창열림)
  • 객체 배열 이해하기
  • 객체 배열 선언 방법
  • 객체 배열 복사하기
'IT공부/Java' 카테고리의 다른 글
  • [Java] Java의 상속 이해하기
  • [Java] Java의 ArrayList 이해하기
  • [Java] Java의 배열의 종류와 각각의 배열 이해하기
  • [Java] Java의 캡슐화 이해하기
무지개 곰
무지개 곰
java solidity react javascript등 프로그래밍 공부 기록

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.