`
zyongsheng83
  • 浏览: 41173 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

jdk1.5新特性:

    博客分类:
  • jse
阅读更多

1. 范型(Generic)

   ArrayList<String> list = new ArrayList<String>();
   list.add(aAaram); //这里的aParam必须是一个String
   String list.get(aIndex); //回自动把返回类型转换成String

   calss Test<E> extends ArrayList<E>{
   //当父类用范型的时候, 子类也要用

2. For-Each

   //假设有一个int[] intArray
   for(int i : intArray){
     i = 0;  //不会改变数组, 这里得到的只是值, 不是引用
   }

   //假设有一个ArrayList<String> list
   //ArrayList list2
   for(String s : list){
   }
   for(Object o : list2){
   }

   //这样的遍历不会改变原来的集合, 而且在遍历结束前也不能由别的线程改变, 否则会抛出ConcurrentModificationException

3. 自装拆包(Autobaxing/unboxing)

   //假设有一个ArrayList list, 可以执行
   list.add(123);
   System.out.println(list.get(0).getClass());
   //输出java.lang.Integer, 说明在add的时候123被自动包装成Integer

   //还没发现自动拆包在哪里体现出来

4. 枚举(Enum)

   枚举是一个跟类差不多的东西, 例:
   public enum Season{
     spring,
     summer,
     autumn,
     winter;  //这四个就是可枚举的值

     private int avgTemp; //可以有变量
     private Season(){  //可以有默认构造函数, 但只能是private的
       avgTemp = 10;
     }
     public void setAvgTemp(int temp){  //可以有方法
       avgTemp = temp;
     }
     public int getAvgTemp(){
       return avgTemp;
     }
   }
   Color.sprint.setAvgTemp(14);
   // 设置春天的平均温度为14度
   Color.valueOf("summer").setAvgTemp(32);
   // 设置夏天的平均温度为32度
   for(Color c : Color.values()){
     System.out.println(c + " : " + c.getAvgTemp()):
   }
   // spring : 14
   // summer : 32
   // autumn : 10
   // winter : 10

5. 可变参数

   public static void printParams(Object ... objs){
     for(Object o : objs){ // 这里的objs是一个Object[]型的数组
       System.out.println(o.getClass());
     }
   }
   printParams("abc", 123, new ArrayList());
   //输出:
   //java.lang.String
   //java.lang.Integer
   //java.util.ArrayList

6. 静态导入

   import java.lang.Math.*;
   System.out.println(PI); //这样就可以向使用本地变量一样使用Math里的变量了
   // 输出:3.141592653
   // 正如很多人说的, 这样容易让人产生混淆
 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics