CharArray
public class CharArray {
public static void main(String[] args) {
char[] alphabets = new char[26];
char ch = 'A';
for(int i = 0; i < alphabets.length; i++, ch++) {
alphabets[i] = ch;
}
for(int i = 0; i < alphabets.length; i++) {
System.out.println(alphabets[i] + " = " + (int)alphabets[i]);
}
}
}
A = 65..... Z = 90
알파벳을 아스키코드로 변환하는 식
BookArray
public class Book {
private String bookName;
private String author;
public Book() {}
public Book(String bookName, String author) {
this.bookName = bookName;
this.author = author;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public void showBookInfo() {
System.out.println(bookName + ", " + author);
}
}
public class BookArray {
public static void main(String[] args) {
Book[] library = new Book[5];
for(int i = 0; i < library.length; i++) {
System.out.println(library[i]);
}
}
}
null
null
null
null
null
BookArray2
public class BookArray2 {
public static void main(String[] args) {
Book[] library = new Book[5];
library[0] = new Book("태백산맥", "조정래");
library[1] = new Book("데미안", "헤르만 헤세");
library[2] = new Book("어떻게 살 것인가", "유시민");
library[3] = new Book("토지", "박경리");
library[4] = new Book("어린왕자", "생텍쥐페리");
for(int i = 0; i < library.length; i++) {
library[i].showBookInfo();
}
for(int i = 0; i < library.length; i++) {
System.out.println(library[i]);
}
}
}
태백산맥, 조정래 day5.Book@15db9742
데미안, 헤르만 헤세 day5.Book@6d06d69c
어떻게 살 것인가, 유시민 day5.Book@7852e922
토지, 박경리 day5.Book@4e25154f
어린 왕자, 생텍쥐페리 day5.Book@70dea4e
ObjectCopy
public class ObjectCopy1 {
public static void main(String[] args) {
Book[] bookArray1 = new Book[3];
Book[] bookArray2 = new Book[3];
bookArray1[0] = new Book("태백산맥", "조정래");
bookArray1[1] = new Book("데미안", "헤르만 헤세");
bookArray1[2] = new Book("어떻게 살 것인가", "유시민");
System.arraycopy(bookArray1, 0, bookArray2, 0, 3);
for(int i = 0; i < bookArray2.length; i++) {
bookArray2[i].showBookInfo();
}
}
}
태백산맥, 조정래
데미안, 헤르만 헤세
어떻게 살 것인가, 유시민
얕은 복사(Shallow Copy)란?
얕은 복사는 새 객체 B가 생성되며 A의 필드 값들은 B로 복사된다.
필드 복사(field copy)라고도 한다.
얕은 복사는 단순하고 일반적으로 비용이 적으므로 단순히 비트를 정확히 복사함으로써
구현할 수 있는 것이 보통이다.
얕은 복사
public class ShallowCopy1 { // 얕은 복사(Shallow Copy)
public static void main(String[] args) {
Book[] bookArray1 = new Book[3];
Book[] bookArray2 = new Book[3];
bookArray1[0] = new Book("태백산맥", "조정래");
bookArray1[1] = new Book("데미안", "헤르만 헤세");
bookArray1[2] = new Book("어떻게 살 것인가", "유시민");
System.arraycopy(bookArray1, 0, bookArray2, 0, 3);
for(int i = 0; i < bookArray2.length; i++) {
bookArray2[i].showBookInfo();
}
bookArray1[0].setBookName("나목");
bookArray1[0].setAuthor("박완서");
System.out.println("=== bookArray1 ===");
for(int i = 0; i < bookArray1.length; i++) {
bookArray1[i].showBookInfo();
}
System.out.println("=== bookArray2 ===");
for(int i = 0; i < bookArray2.length; i++) {
bookArray2[i].showBookInfo();
}
}
}
태백산맥, 조정래
데미안, 헤르만 헤세
어떻게 살 것인가, 유시민
=== bookArray1 ===
나목, 박완서
데미안, 헤르만 헤세
어떻게 살 것인가, 유시민
=== bookArray2 ===
나목, 박완서
데미안, 헤르만 헤세
어떻게 살 것인가, 유시민
깊은 복사(Deep Copy)란?
얕은 복사의 대안이다.
이는 필드가 역참조됨을 의미한다.
즉, 복사되는 객체에 대한 참조 대신, 참조가 되는
모든 객체를 위한 새 사본의 객체가 만들어진다.
깊은 복사는 추가 객체의 생성이 필요하기 때문에
비용이 더 많으며, 참조가 잠재적으로 복잡한 그래프를
형성할 수 있기 때문에 상당히 더 복잡하다.
깊은 복사
public class DeepCopy1 { // 깊은 복사(Deep Copy)
public static void main(String[] args) {
Book[] bookArray1 = new Book[3];
Book[] bookArray2 = new Book[3];
bookArray1[0] = new Book("태백산맥", "조정래");
bookArray1[1] = new Book("데미안", "헤르만 헤세");
bookArray1[2] = new Book("어떻게 살 것인가", "유시민");
bookArray2[0] = new Book(); // 객체 직접 생성
bookArray2[1] = new Book();
bookArray2[2] = new Book();
for(int i = 0; i < bookArray1.length; i++) { // 각각의 요소를 복사
bookArray2[i].setBookName(bookArray1[i].getBookName());
bookArray2[i].setAuthor(bookArray1[i].getAuthor());
}
for(int i = 0; i < bookArray2.length; i++) { // 복사된 내용 확인
bookArray2[i].showBookInfo();
}
bookArray1[0].setBookName("나목"); // bookArray1의 내용 수정
bookArray1[0].setAuthor("박완서");
System.out.println("=== bookArray1 ==="); // bookArray1 출력
for(int i = 0; i < bookArray1.length; i++) {
bookArray1[i].showBookInfo();
}
System.out.println("=== bookArray2 ==="); // bookArray2 출력
for(int i = 0; i < bookArray2.length; i++) {
bookArray2[i].showBookInfo(); // bookArray1과 다른 내용으로 출력됨
}
}
}
태백산맥, 조정래
데미안, 헤르만 헤세
어떻게 살 것인가, 유시민
=== bookArray1 ===
나목, 박완서
데미안, 헤르만 헤세
어떻게 살 것인가, 유시민
=== bookArray2 ===
나목, 박완서
데미안, 헤르만 헤세
어떻게 살 것인가, 유시민
결괏값은 얕은 복사랑 같음
ArrayList
import java.util.ArrayList;
public class ArrayList1 {
public static void main(String[] args) {
ArrayList<Book> library = new ArrayList<Book>();
library.add(new Book("태백산맥", "조정래"));
library.add(new Book("데미안", "헤르만 헤세"));
library.add(new Book("어떻게 살 것인가", "유시민"));
library.add(new Book("토지", "박경래"));
library.add(new Book("어린왕자", "생텍쥐페리"));
for(int i = 0; i < library.size(); i++) {
Book book = library.get(i);
book.showBookInfo();
}
System.out.println();
System.out.println("=== 향상된 for문 사용 ===");
for(Book book : library) {
book.showBookInfo();
}
}
}
태백산맥, 조정래
데미안, 헤르만 헤세
어떻게 살 것인가, 유시민
토지, 박경래
어린 왕자, 생텍쥐페리
=== 향상된 for문 사용 ===
태백산맥, 조정래
데미안, 헤르만 헤세
어떻게 살 것인가, 유시민
토지, 박경래
어린왕자, 생텍쥐페리
'JAVA♥' 카테고리의 다른 글
| 객체 지향 프로그래밍(OOP) - 용어정리 (0) | 2023.05.16 |
|---|---|
| 객체 지향 프로그래밍(OOP) - 캡슐화(Encapsulation) (0) | 2023.05.15 |
| JAVA 반복문 - for문, while문, do-while문 알기(예제) (0) | 2023.05.11 |
| JAVA 배열 기초(Array) 배우기 (0) | 2023.05.10 |
| switch문을 이용한 문제 (0) | 2023.05.10 |