문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 | 다음 판 양쪽 다음 판 | ||
study:java:javachobo:appendix [2010/03/19 20:52] gauryan |
study:java:javachobo:appendix [2010/03/19 21:11] gauryan |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== JDK 1.5에 추가된 기능 ====== | ====== JDK 1.5에 추가된 기능 ====== | ||
+ | |||
+ | ===== 오토박싱(autoboxing) ===== | ||
+ | 컬렉션에는 객체로 저장해야하기 때문에 기본형 값을 저장하기 위해서는 Integer나 Long과 같은 Wrapper클래스를 사용해야했다. 그러나 이제부터는 기본형 값을 직접 컬렉션에 저장할 수 있다. 컴파일러에 의해서 자동적으로 Wrapper클래스로 변환되어 저장되는 | ||
+ | |||
+ | ===== 향상된 for 문 ===== | ||
+ | 배열과 컬렉션에 저장된 요소에 접근할 때 기존보다 편리한 방법으로 처리할 수 있도록 for문의 새로운 문법이 추가되었다. | ||
+ | <code java> | ||
+ | 1. 배열 | ||
+ | for( 배열의 타입 변수명 : 배열 ) { | ||
+ | // 반복할 문장 | ||
+ | } | ||
+ | | ||
+ | 2. 컬렉션 | ||
+ | for( 컬렉션에 저장된 요소의 타입 변수명 : 컬렉션 ) { | ||
+ | // 반복할 문장 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | 먼저, 정수형 배열이 다음과 같이 선언되어 있다고 가정하자. | ||
+ | <code java> | ||
+ | int[] arr = {10, 20, 30, 40, 50}; | ||
+ | </ | ||
+ | |||
+ | 아래의 두 for 문은 서로 동일하다. | ||
+ | <code java> | ||
+ | for(int i=0 ; i < arr.length ; i++) { | ||
+ | System.out.println(arr[i]); | ||
+ | } | ||
+ | </ | ||
+ | <code java> | ||
+ | for(int i : arr) { | ||
+ | // arr[i]가 아닌 i라는 것에 유의 | ||
+ | System.out.println(i); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | 이번엔 ArrayList를 생성하고 다음과 같이 세 개의 Integer객체를 저장하고 각 요소에 접근하기 위해 Iterator를 얻었다. | ||
+ | <code java> | ||
+ | ArrayList< | ||
+ | list.add(new Ingerger(10)); | ||
+ | list.add(new Ingerger(20)); | ||
+ | list.add(new Ingerger(30)); | ||
+ | |||
+ | Iterator it = list.iterator(); | ||
+ | </ | ||
+ | |||
+ | <code java> | ||
+ | for(; | ||
+ | System.out.println(it.next()); | ||
+ | } | ||
+ | </ | ||
+ | <code java> | ||
+ | for(Integer i : list) { | ||
+ | System.out.println(i); | ||
+ | } | ||
+ | </ | ||
+ | 향상된 for 문은 배열보다는 컬렉션에 저장된 요소에 접근할 때 더욱 코드가 간결해진다는 것을 알 수 있다. 한 가지 주의해야할 점은 향상된 for 문내에서 삭제와 같이 컬렉션을 변경하는 동작을 해서는 안 된다는 것이다. | ||
===== 제네릭스(Generics) ===== | ===== 제네릭스(Generics) ===== | ||
줄 95: | 줄 152: | ||
</ | </ | ||
<code java> | <code java> | ||
- | public static <T extends Unit> printAll(ArrayList< | + | public static <T extends Unit> |
for(Unit u : list) { | for(Unit u : list) { | ||
System.out.println(u); | System.out.println(u); | ||
줄 108: | 줄 165: | ||
class Unit() {} | class Unit() {} | ||
+ | class Tank extends Unit {} | ||
+ | class Dropship extends Unit {} | ||
+ | |||
+ | class GenericsEx1 { | ||
+ | public static void main(String[] args) { | ||
+ | ArrayList< | ||
+ | ArrayList< | ||
+ | | ||
+ | unitList.add(new Tank()); | ||
+ | unitList.add(new Dropship()); | ||
+ | | ||
+ | tankList.add(new Tank()); | ||
+ | tankList.add(new Tank()); | ||
+ | | ||
+ | printAll(unitList); | ||
+ | // printAll(tankList); | ||
+ | |||
+ | printAll2(unitList); | ||
+ | printAll2(tankList); | ||
+ | } | ||
+ | | ||
+ | public static void printAll(ArrayList< | ||
+ | for( Unit u : list ) { | ||
+ | System.out.println(u); | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | // public static void printAll2(ArrayList<? | ||
+ | public static <T extends Unit> void printAll2(ArrayList< | ||
+ | for( Unit u : list ) { | ||
+ | System.out.println(u); | ||
+ | } | ||
+ | } | ||
+ | } | ||
</ | </ |