티스토리 뷰

Computer/JAVA

jdk 1.4와 jdk 1.5 의 차이점

인생이글케쉬우냐 2009. 5. 14. 15:07
출처 何事も成さぬは人の成さぬなりけり… | 신종현
원본 http://blog.naver.com/frdevil/33883978

 

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 이 까페의 주인이 쓴 글입니다.


반응형

'Computer > JAVA' 카테고리의 다른 글

[JAVA] Float형의 소숫점 아래 고정자리 표기방법  (1) 2014.04.24
[JAVA] replace 사용  (0) 2010.01.08
[JAVA] ConcurrentHashMap  (2) 2009.12.16
Java Mail  (0) 2009.05.14
자바 exe파일 만들기  (0) 2009.05.14