반응형
# 크기에 상관없이 객체를 저장(List)
## ArrayList
- ArrayList 는 Java util에 이미 만들어져 있는 API
- ArrayList 이용 책(BookDTO) 3권을 저장하고 출력하기.
List list = new ArrayList();
// add 동작 (UpCasting)
list.add(new BookDTO("갓바1", 20000, "가출판사", 300));
list.add(new BookDTO("갓바2", 25000, "나출판사", 600));
list.add(new BookDTO("갓바3", 30000, "다출판사", 400));
// get 동작 (DownCasting)
BookDTO a = (BookDTO)list.get(0);
BookDTO a = (BookDTO)list.get(1);
BookDTO a = (BookDTO)list.get(2);
## ArrayList (실습)
import java.util.ArrayList;
import java.util.List;
import kr.tpc.BookDTO;
public class TPC38 {
public static void main(String[] args) {
// ArrayList list = new ArrayList();
// 아래와 같이 ArrayList 의 부모 타입인 list로 받을 수 있음.
List<BookDTO> list = new ArrayList(1); // <> : 버킷, 제네릭 사용하여 사용가능한 타입 제한. Object[] -> BookDTO[]
list.add(new BookDTO("갓바책1", 35000, "가출판사", 200));
list.add(new BookDTO("갓바책2", 5000, "나출판사", 400));
list.add(new BookDTO("갓바책3", 15000, "다출판사", 250));
for (int i = 0; i < list.size(); i++) {
// Object 배열인 경우.
//Object o = list.get(i);
//BookDTO book = (BookDTO)o;
// 제네릭 사용한 경우 <BookDTO>
BookDTO book = list.get(i);
System.out.println(book.title + "\t" + book.price + "\t" + book.company + "\t" + book.page);
}
}
}
# Wrapper 클래스
- 기본자료형(클래스 아님)을 객체 자료형으로 사용할 수 있도록 만들어 놓은 자료형 (=포장 클래스)
기본자료형 | 객체자료형 | 사용 예 |
int | Integer | 1, new Integer(1) |
float | Float | 23.4f, new Float(23.4f) |
char | Character | 'B', new Character('B') |
boolean | Boolean | true, new Boolean(true) |
- 변수에 1을 저장하는 방법은 아래와 같이 2가지 존재.
방법1.
int a = 1;
방법2.
Integer b = new Integer(1);
int v = b.intValue(); // intValue() or toString() or parseInt() 등 포장을 벗기는 함수 존재.
- 기본자료형을 Object에 저장할 경우?
Object[] obj = new Object[3];
obj[0] = 1;
obj[1] = 2;
obj[2] = 3;
=> 틀린표현 이지만, 컴파일러가 자동으로 Boxing 하여 에러 발생 하지않고 사용 가능.
obj[0] = new Integer(1);
obj[1] = new Integer(2);
obj[2] = new Integer(3);
=> 맞는 표현. (정석)
- Boxing / Unboxing : 컴파일러가 자동으로 해준다.
// Boxing
Integer a = 1;
=> 위 표현식에서 1을 컴파일러가 자동으로 new Integer(1); 로 포장해줌 (boxing)
// Unboxing
int b = new Integer(10);
## Wrapper 클래스 (실습)
public class TPC39 {
public static void main(String[] args) {
int a = 1;
// Integer : java.lang 에 존재하는 API
Integer b = new Integer(1); // 정석 표현.
// Integer b = 1; // boxing -> 컴파일러가 1을 내부적으로 boxing.
System.out.println(b.intValue()); // 정수형태 1
System.out.println(b.toString()); // 문자열형태 "1"
Object[] obj = new Object[3];
/*
obj[0] = new Integer(1); // 정석 표현.
obj[1] = new Integer(2);
obj[2] = new Integer(3);
*/
obj[0] = 1; // boxing
obj[1] = 2;
obj[2] = 3;
System.out.println(obj[0].toString());
System.out.println(obj[1].toString());
System.out.println(obj[2].toString());
// 문제.
// "100" + "100" = 200 -> 문자열 합산.
String x = "100";
String y = "100";
System.out.println(x + y); // "100100"
int value1 = Integer.parseInt(x);
int value2 = Integer.parseInt(y);
System.out.println(value1 + value2); // 200
// 100 + 100 = "200"
String k1 = String.valueOf(value1);
String k2 = String.valueOf(value2);
System.out.println(k1 + k2); // "100100"
}
}
반응형
'인프런 강의 학습 > Java TPC' 카테고리의 다른 글
Java TPC_20일차 문자열 / API 생성하기 / ArrayList 흉내내기 (0) | 2022.01.27 |
---|---|
Java TPC_19일차 패키지 / 자바에서 제공하는 API 접근 및 활용 (0) | 2022.01.25 |
Java TPC_18일차 객체지향 프로그래밍의 3대 특징 / 다형성 / 추싱클래스와 인터페이스 (0) | 2022.01.24 |
Java TPC_17일차 Object 클래스 / Object 클래스 활용 (0) | 2022.01.24 |
Java TPC_16일차 추상 클래스 / 인터페이스 / 인터페이스(규약)와 JDBC의 관계 / 인터페이스의 상속관계 (0) | 2022.01.23 |