JDK1.5的新特性

 

1 自动打包和解包(boxing/unboxing)

提供基本数据类型和他们对应的外覆类的自动转换

举例来说:在jdk1.5以前,对于Map中元素的存储和取得都是通过Object来进行,不能直接通过基本数据类型

jdk1.5以前的写法:

Map map = new HashMap();

map.put("No1", new Integer(1));

int i = (Integer)map.get("No1").intValue();

 

jdk1.5的写法:

Map map = new HashMap();

map.put("No1", 1);

int i = (Integer)map.get("No1");

 

2 泛型----一般在定义容器的时候使用

在jdk1.5以前,容器中只能装Object类型的元素,所以不论什么类型的元素,如果放到容器中,都会失去他们自己的类型,取出来的时候,需要强制转换为他们自己的具体类型,很麻烦。

但是jdk1.5解决了这样的问题,通过泛型强制指定该容器只能放某种具体类型的元素,所以,在取出元素的时候,就不需要强制类型转换了。

例如:

jdk1.5以前的写法:取出容器中元素的时候,必须进行强制类型转换
  List list = new ArrayList();

  list.add("aaa1");

  list.add("aaa2");

  list.add("aaa3");

  for (int i = 0; i < list.size(); i++) {

   System.out.println((String) list.get(i));

  }

 

jdk1.5的写法:取出容器中元素的时候,不必进行强制类型转换

  List<String> list = new ArrayList<String>();

  list.add("aaa1");

  list.add("aaa2");

  list.add("aaa3");

  for (int i = 0; i < list.size(); i++) {

   System.out.println(list.get(i));

  }

注意:什么样的类可以指定<String>这样的东西呢?

类似于:public class ArrayList<E> extends AbstractList<E> implements List<E>

这种定义的类/接口就可以

当然,也可以指定多个,例如:

public interface Map<K,V>,就可以这样指定:

Map<String, Integer> map = new HashMap<String, Integer>();

map.put("No1", 1);

int i = map.get("No1");

 

3 对于容器的For循环---简便型(遍历数组和容器)

int[] arr = {1,2,3,4,5,6};

for (int c : arr){

  System.out.println(c);

}

或者

String[] arr = {"No1", "No2", "No3", "No4", "No5"};

for (String c : arr){

  System.out.println(c)

}

或者

List list = new ArrayList();

list.add("No1");

list.add("No2");

list.add("No3");

for (Object c : list){

  System.out.println((String)c);

}

你可能感兴趣的:(jdk,String,object,list,HashMap,Integer)