1. for()문의 기능 확대
for 루프에서 기존의 Iterator의 사용이 생략된 형식으로 코드를 작성할수있습니다.
[jdk1.4]
ArrayList array = new ArrayList();
Iterator iter = array.iterator();
while(iter.hasNext()){
String str = (String)iter.next();
System.out.println(str);
}
[jdk1.5]
ArrayList array = new ArrayList();
for(Object o : array){
String str = (String)o;
System.out.println(str);
}
[jdk1.4]
String[] data = {"Apple", "Banana", "Tomato"};
for(int i=0; i
{
String str = data[i];
System.out.println(str);
}
[jdk1.5]
String[] data = {"Apple", "Banana", "Tomato"};
for(String str : data)
{
System.out.println(str);
}
2. Generics 기능추가
C++에서는 템플릿(Generics)이 존재하는데요.
이번에, 자바에서도 Collection 클래스에 템플릿 기능이 추가되었습니다.
[jdk1.4]
ArrayList array = new ArrayList();
Iterator iter = array.iterator();
while(iter.hasNext()){
String str = (String)iter.next();
System.out.println(str);
}
(아래처럼 컬렉션클래스에 형을 지정하므로써, 실행시에 캐스팅(casting)
이 불필요하게 되었습니다.)
[jdk1.5]
List array = new ArrayList();
Iterator iter = array.iterator();
while(iter.hasNext()){
String str = (String)iter.next();
System.out.println(str);
}
3. Autoboxing
기본형(int, float, double, short...)과 그기본형의 랩퍼 클래스 와의 변환이 간단히 이루어집니다.
[jdk1.4]
Integer x = new Integer(1);
int y = x.intValue();
[jdk1.5]
Integer x = 1;
int y = x;
위에서 보는 것처럼 Autoboxing(기본형에서 그기본형의 랩퍼 클래스로 변환)이 손쉽게 이루어 집니다.
[jdk1.4]
ArrayList array = new ArrayList();
array.add(new Integer(1));
array.add(new Integer(2));
array.add(new Integer(3));
int nSum = 0;
Iterator iter = array.iterator();
while(iter.hasNext()){
Integer i = (Integer)iter.next();
nSum = nSum + i.intValue();
}
위코드는 다음 과 같은 코드로 변환될수 있습니다.
[jdk1.5]
ArrayList array = new ArrayList();
array.add((Integer)1);
array.add((Integer)2);
array.add((Integer)3);
int nSum = 0;
Iterator iter = array.iterator();
while(iter.hasNext()){
Integer i = (Integer)iter.next();
nSum = nSum + i;
}
아래는 Autoboxing과 Generic을 적용해서...
[jdk1.5]
ArrayList array = new ArrayList();
array.add(1);
array.add(2);
array.add(3);
int nSum = 0;
Iterator iter = data.iterator();
while(iter.hasNext()){
Integer i = iter.next();
//int i = iter.next(); 위코드와 동일
nSum = nSum + i;
}
아래는 Autoboxing과 Generic, for 확장 기능을 적용해서..
[jdk1.5]
ArrayList array = new ArrayList();
array.add(1);
array.add(2);
array.add(3);
int nSum = 0;
for(Integer i : array)
{
nSum += i;
}
// 참고로 jdk1.5로 컴파일된 클래스 파일은 특별한 변환없이 jdk1.4에서도 실행된다고 합니다.
그외에도 GUI 쪽에선, 자바VM공유가 가능하다고 합니다. 자바 애플리케이션이 보다 성능이 향상되겠죠 ^^
출처 : http://cafe.naver.com/javacircle.cafe 이 까페의 주인이 쓴 글입니다.