반응형
19. 객체 배열 - 1 - 20. 객체 배열 - 2
| 기본 자요형 배열과 참조 자료형 배열( 객체 배열 )
기본자료형은 실제 값이 할당된 배열 인덱스 자리에 들어가지만, 객체 자료형의 경우 주솟값이 들어간다. //4바이트 - 8 바이트 정도
getter setter 의 경우, 우클릭해서 source -> generate getter, setter 누르면 되는 것을 확인할 수 있다.
package array;
public class Book {
private String author;
private String title;
public Book() {
} // default 생성자
public Book(String title, String author) {
this.author = author; // 매개변수 생성자
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public void showBookInfo() {
System.out.println(title + "," + author);
}
}
객체를 넣어줌.
앞에 타입이 들어가고 @ 뒤에는 주솟값이 들어가는 것을 확인할 수 있음. 16진수이므로 4비트 씩 8 글자 해서 32비트이다.
package array;
public class BookArrayTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Book[] library = new Book[5]; // book 자리 5개가 생긴거지 객체가 5개가 생긴 것이 아니다. (헷깔림 주의)
// 책, 객체 넣어주기
// 안하면 NullPointExceptionError 가 나는 경우가 있으니 주의하자!
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();
}
}
}
* 배열 복사하는 법에 대해서 알아보자.
package array;
public class ArrayCopy {
public static void main(String[] args) {
int[] arr1 = { 10, 20, 30, 40, 50 };
int[] arr2 = { 1, 2, 3, 4, 5 };
System.arraycopy(arr1, 0, arr2, 1, 3);
// 무엇을 o 어디서부터 o 어디에 o 어디부터 o 어디까지 ( 범위를 넘어서지 않게 주의한다. )
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]);
}
}
}
/*
1
10
20
30
5
*/
* 객체 배열 복사
// 얕은 복사 => 주소만 복사됨 => 한 배열을 바꾸면, 다른 배열도 바뀜.
// 얕은 복사 => 주소만 복사됨 => 한 배열을 바꾸면, 다른 배열도 바뀜.
package array;
public class ObjectCopy {
public static void main(String[] args) {
// TODO Auto-generated method stub
Book[] library = new Book[5]; // book 자리 5개가 생긴거지 객체가 5개가 생긴 것이 아니다. (헷깔림 주의)
Book[] copyLibrary = new Book[5]; // book 자리 5개가 생긴거지 객체가 5개가 생긴 것이 아니다. (헷깔림 주의)
// 책, 객체 넣어주기
// 안하면 NullPointExceptionError 가 나는 경우가 있으니 주의하자!
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, copyLibrary, 0, 5);
// 향상된 반복문
// 타입 param: 배열
for (Book book : copyLibrary) {
book.showBookInfo();
}
/*
* 태백산맥1,조정래 태백산맥2,조정래 태백산맥3,조정래 태백산맥4,조정래 태백산맥5,조정래
*
*/
library[0].setTitle("나목");
library[0].setAuthor("박완서");
System.out.println("=======================");
for (Book book : copyLibrary) {
book.showBookInfo();
}
}
}
## 깊은 복사
arraycopy 가 아니라 직접 할당 하나씩 해줘야함.
package array;
public class ObjectCopy2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Book[] library = new Book[5]; // book 자리 5개가 생긴거지 객체가 5개가 생긴 것이 아니다. (헷깔림 주의)
Book[] copyLibrary = new Book[5]; // book 자리 5개가 생긴거지 객체가 5개가 생긴 것이 아니다. (헷깔림 주의)
// 책, 객체 넣어주기
// 안하면 NullPointExceptionError 가 나는 경우가 있으니 주의하자!
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", "조정래");
copyLibrary[0] = new Book();
copyLibrary[1] = new Book();
copyLibrary[2] = new Book();
copyLibrary[3] = new Book();
copyLibrary[4] = new Book();
for( int i =0; i <library.length; i++) {
copyLibrary[i].setAuthor(library[i].getAuthor());
copyLibrary[i].setTitle(library[i].getTitle());
}
for (Book book : copyLibrary) {
book.showBookInfo();
}
library[0].setTitle("나목");
library[0].setAuthor("박완서");
System.out.println("=======================");
for (Book book : copyLibrary) {
book.showBookInfo();
}
/*
* 태백산맥1,조정래
태백산맥2,조정래
태백산맥3,조정래
태백산맥4,조정래
태백산맥5,조정래
=======================
태백산맥1,조정래
태백산맥2,조정래
태백산맥3,조정래
태백산맥4,조정래
태백산맥5,조정래
*/
}
}
향상된 for문
자바 인강이 듣고 싶다면 => https://bit.ly/3ilMbIO
반응형
'스프링, 자바' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 22회차 미션 (0) | 2020.08.31 |
---|---|
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 21회차 미션 (0) | 2020.08.30 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 19회차 미션 (0) | 2020.08.28 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 18회차 미션 (0) | 2020.08.27 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 17회차 미션 (0) | 2020.08.26 |