본문 바로가기

Lecture & Tip/Web[웹]

[펌] jdk 5.0의 새기능..

그간 너무 놀았는지..지금 6.0이 새로 나왔는데
5.0 토픽들을 찾아 읽어보고 있다니;;; 반성반성...그래도 적응해야지..
바뀐게 많네~
-------------------------------------
올해 공개될 JDK1.5(코드명 "타이거") 적용될 새로운 특징을 간략히 정리해 봤습니다.
 
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<data.length; 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<String> array = new ArrayList<String>();
Iterator<String> 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<Integer> array = new ArrayList<Integer>();
array.add(1);
array.add(2);
array.add(3);
int nSum = 0;
Iterator<Integer> iter = data.iterator();
while(iter.hasNext()){
   Integer i = iter.next();
   //int i = iter.next(); 위코드와 동일 
   nSum = nSum + i;
}
아래는 Autoboxing과 Generic, for 확장 기능을 적용해서..
[jdk1.5]
ArrayList<Integer> array = new ArrayList<Integer>();
array.add(1);
array.add(2);
array.add(3);
int nSum = 0;
for(Integer i : array)
{
  nSum += i;
}
 
// 참고로 jdk1.5로 컴파일된 클래스 파일은 특별한 변환없이 jdk1.4에서도 실행된다고 합니다.
---------------
출처 : javanuri.com