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

来源:互联网 发布:linux 网卡物理地址 编辑:程序博客网 时间:2024/05/22 11:32
------- 物联云培训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培训、期待与您交流! ----------  
0 0
原创粉丝点击