반응형

# 크기에 상관없이 객체를 저장(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"
		
	}
}
반응형

+ Recent posts