黑马程序员_Java基础加强之JDK1.5的新特性

------- 物联云培训java培训、期待与您交流! ----------  

一、自动装箱拆箱

装箱:例如:Integer>

拆箱:例如:i+23;   23会自动拆成基本数据类型的23,来进行运算

二、可变参数

实际上就是里面定义了一个数组

 注意:定义参数时,要把可变参数定义在末尾。因为是从前向后匹配

示例代码:

public class Change {
   /**
    * @param args
    */
   public static void main(String[] args) {
      // TODOAuto-generated method stub
      change(2,3,5,7,2);
      change(2,34,5);
      change(3);
   }
   public static void change(int...cha){//可变参数
      for(int i=0;i<cha.length;i++){
         System.out.print(cha[i]+" ");
      }
      System.out.println();
   }
}
运行结果:

2 3 5 7 2

2 34 5

3

三、枚举

     实际上就是,不能定义其他的对象只能定义规定好了的对象。枚举类中定义的每一个对象都是唯一的。

     摸弄枚举类的原理:

     如下例子:   

 public abstract  class WeekDay {
 
     private WeekDay(){};
     public static WeekDay MON=new WeekDay(){
 
      @Override
      public WeekDay nextDay() {
         // TODO Auto-generated method stub
         return SUN;
      }};
     public static WeekDay SUN=new WeekDay(){
 
      @Override
      public WeekDay nextDay() {
         // TODO Auto-generated method stub
         return MON;
      }};
     public  abstract WeekDay nextDay();
     public String toString()
     {
        return (this==MON)?"MON":"SUN";
     }
}
测试类:
public class Test1 {
 
   /**
    * @param args
    */
   public static void main(String[] args) {
      // TODOAuto-generated method stub
      WeekDay weekday = WeekDay.MON;
      System.out.println(weekday.nextDay());
   }
}


下面是用枚举类模拟了一个交通灯:

代码如下:

public enumtrafficLamp
  {
     RED(30){
 
      @Override
      public trafficLamp nextLamp() {
         // TODO Auto-generated method stub
         return GREEN;
      }
       
     },
     GREEN(45){
 
      @Override
      public trafficLamp nextLamp() {
         // TODO Auto-generated method stub
         return YELLOW;
      }},
     YELLOW(10){
 
      @Override
      public trafficLamp nextLamp() {
         // TODO Auto-generated method stub
         return RED;
      }};
     public abstract trafficLamp nextLamp();
     private int time;
     private trafficLamp(int time)
     {
        this.time=time;
     }
    
  }

四、高级for循环

     格式:for( 接受变量的类型 变量 : 待循环的变量 ){ }

     注意:必须是Intertor的子类才可以使用高级for循环

      在for循环体内中不能增删操作

      示例代码:        

import java.util.ArrayList;
import java.util.List;
public class ForDemo {
   /**
    * @param args
    */
   public static void main(String[] args) {
      // TODO Auto-generated method stub
      List<String> list=new ArrayList<String>();
      list.add("aaaaa");
      list.add("bbbbb");
      list.add("ccccc");
      for(String s:list){//高级for循环
         System.out.println(s);
      }
   }
}

  运行结果:

aaaaa

bbbbb

ccccc

五、静态导入

importstatic  java.lang.Math.*;//导入Math类中的所有方法

当你写类中的方法时,就不用写类名了。

示例代码:

import static com.demo.Change.*;//静态导入
public class StaticImport {
   /**
    * @param args
    */
   public static void main(String[] args) {
      // TODOAuto-generated method stub
      change(3,4,6,2,7);
   }
}
运行结果:3 4 6 2 7

六、泛型

其实就是限制一些数据的类型

泛型可以定义在类上,也可以定义在成员上。

当泛型定义在类上时,整个类的的类型都是一样的。

上限:<?>

ArrayList >

泛型中不存在继承关系:

ArrayList<Object>al=new ArrayList<String>();//错误

Vector<Integer> VectorList[]=new Vector<Integer>[10];//错误

Vector >

Vector<Object>>

泛型当编译完成后会去掉泛型的类型。

<?>通配符,当你不知道用什么类型时可以用?,也表示占位符。

通过反射技术来获取泛型的类型:

代码如下:

import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
   /**
    * @param args
    * @throws ClassNotFoundException
    */
   public static void main(String[] args) throws Exception {
      // TODO Auto-generated method stub
      
      Classclazz = Class.forName("lianxi.Test2");
      Methodmethod = clazz.getMethod("get", List.class);
       Type[] type =method.getGenericParameterTypes();
       for(Type t:type)
       {
          System.out.println(t);
       }          
   }
   public static List<String> get(List<String> l)
   {
      return null;
     
   } 
}
总结:Jdk1.5h是jdk的一次历史性的变革,它里面新添加了许多的类和方法。学习和应用新的方法可以让代码更简单,也可以是代码更加优化;新事物的出现一定是它更好的解决老的事件。在学习新的方法时,我们也不能忘记或不学以前的方法,老的是基础,新的特性只是高于基础,但他也源于基础;只有学好基础才能更好的理解新特性,我们才有可能去创造新特性。


------- 物联云培训java培训、期待与您交流! ----------  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值