컴퓨터공학 💻 도서관📚
Part2. 2-21 객체배열 본문
객체 배열을 n 개 선언하면 객체가 n개 만들어지는게 아니고
객체 n개의 주소를 저장할 방만 생기는 것이다.
나중에 객체를 하나하나 만들어서 집어넣어야 한다
(객체를 넣지 않은 상태로 주소값을 확인해보면 NULL 값이 출력된다)
(Book 클래스)
public class Book {
private String title;
private String author;
public Book() {}
public Book(String title, String author) {
this.title = title;
this.author = author;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public void showBookInfo() {
System.out.println(title + "," +author); // 자바도 이렇게 출력 가능
}
}
(객체 배열)
public class BookArrayTest {
public static void main(String[] args) {
Book[] library = new Book[5];
library[0] = new Book("태백산맥1", "조정래"); // 객체를 하나하나 다 넣어줘야 한다
library[1] = new Book("태백산맥2", "조정래"); // 생성자
library[2] = new Book("태백산맥3", "조정래");
library[3] = new Book("태백산맥4", "조정래");
library[4] = new Book("태백산맥5", "조정래");
for(int i =0; i<library.length; i++) {
System.out.println(library[i]); // 객체의 주소값 확인
library[i].showBookInfo(); // 객체 안에 있는 데이터 확인
}
}
}
* 객체 배열 복사하기
System.arrayCopy(src, srcPos, dest, destPos, length) : 자바에서 제공되는 배열 복사 메서드
( . 을 한 걸 보고 클래스 이름으로 직접 호출한 static 메서드라는 것을 알 수 있다)
얕은 복사 : 객체 주소만 복사되어 한쪽 배열의 요소를 수정하면 같이 수정 됨
즉, 두 배열이 같은 객체를 가리킴
System.array.Copy 함수를 통해 주소가 복사됨
public class ObjectCopy {
public static void main(String[] args) {
Book[] library = new Book[5];
Book[] copyLibaray = new Book[5];
library[0] = new Book("태백산맥1", "조정래");
library[1] = new Book("태백산맥2", "조정래");
library[2] = new Book("태백산맥3", "조정래");
library[3] = new Book("태백산맥4", "조정래");
library[4] = new Book("태백산맥5", "조정래");
System.arraycopy(library, 0, copyLibaray, 0, 5); // 객체 얕은 복사
System.out.println("======copy library=========");
for( Book book : copyLibaray ) {
book.showBookInfo();
}
library[0].setTitle("나목");
library[0].setAuthor("박완서");
System.out.println("======library=========");
for( Book book : library) {
book.showBookInfo();
}
System.out.println("======copy library=========");
for( Book book : copyLibaray) {
book.showBookInfo();
}
}
}
깊은 복사
각각의 객체를 생성하여 그 객체의 값을 복사하여 배열이 서로 다른 객체를 가리키도록 함
set함수, get함수를 통해 객체의 값이 복사됨
public class ObjectCopy2 {
public static void main(String[] args) {
Book[] library = new Book[5];
Book[] copyLibaray = new Book[5];
library[0] = new Book("태백산맥1", "조정래");
library[1] = new Book("태백산맥2", "조정래");
library[2] = new Book("태백산맥3", "조정래");
library[3] = new Book("태백산맥4", "조정래");
library[4] = new Book("태백산맥5", "조정래");
copyLibaray[0] = new Book(); // 객체 각각 생성
copyLibaray[1] = new Book();
copyLibaray[2] = new Book();
copyLibaray[3] = new Book();
copyLibaray[4] = new Book();
for(int i = 0; i< library.length; i++) {
copyLibaray[i].setTitle(library[i].getTitle()); // setTitle 메서드 활용
copyLibaray[i].setAuthor(library[i].getAuthor());
}
library[0].setTitle("나목");
library[0].setAuthor("박완서");
System.out.println("======library=========");
for( Book book : library) {
book.showBookInfo();
}
System.out.println("======copy library=========");
for( Book book : copyLibaray) {
book.showBookInfo();
}
}
}
'✅🌲강의 복습 노트 > 패캠 JavaSpring 강의,코드 복습' 카테고리의 다른 글
Part2. 2-23 객체 배열을 구현한 클래스 ArrayList (리스트) (1) | 2025.05.19 |
---|---|
Part2. 2-22 2차원 배열 (0) | 2025.05.19 |
Part2. 2-20 배열 (1) | 2025.02.04 |
Part2. 2-19 static과 싱글톤 패턴 복습 (1) | 2025.02.04 |
Part2. 2-18 싱글톤 패턴 : 프로그램에서 인스턴스가 유일해야 하는 경우 사용하는 디자인 패턴 (0) | 2025.02.03 |
Comments