jdk1.5新特性

1、静态导入
   示例:
       package cn.zuxia.test;
       /**
        * 这里就是静态导入
        */
       import static java.lang.Math.*;  //通过静态导入导入Math类的所有静态方法

       public class Test01 {

             public static void main(String[] args) {
    
                   System.out.println(max(3, 6)); //这里直接使用的max方法,而不是Math.max()
             }
       }
 
2、可变参数
   作用:一个方法接受的参数个数不固定
   特点:
       * 只能出现在参数列表的最后
       * ...位于变量类型和变量名之间,前后有无空格都可以
       * 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数
   示例:
       public static void main(String[] args) {
             add(2, 3, 5, 6);
       }
 
       public static void add(int ... args) {
             System.out.println(args[0]);
             for (int j = 0; j < args.length; j++) {
                   System.out.println(args[j]);
            }
        }

 

3、for循环加强
   语法:for([final] Type 变量名 : 集合变量名) {......}
   注意事项:
       * 迭代变量变量必须在()中定义
       * 集合变量名可以是数组或实现了Iterable接口的集合类
   示例:
       public static void main(String[] args) {
             add(2, 3, 5, 6);
       }
 
       public static void add(int ... args) {
             System.out.println(args[0]);
             for (int arg : args) {
                  System.out.println(arg);
             }
       }
    大家可以去下载sun公司的语言规范

 

4、基本类型的自动装箱与拆箱
      Integer obj1 = 3;  //自动装箱
      System.out.println(obj1 + 3);  //自动拆箱

      Integer s1 = 3;
      Integer s2 = 3;
      System.out.println(s1 == s2);  //true

      Integer s3 = 223;
      Integer s4 = 223;
      System.out.println(s3 == s4);  //false
      问题在于Interger在-128~127时是一个对象,大于127就是另一个对象,这就是享元模式

      * 享元模式:当对象很小,而且很多地方都要使用,这时我们就可以把这些对象用一个对象来表示,如abcacd如果每个字母都是一个对象,那么这时的对象就很多了(6个),我们可以把a作为一个对象,当再次使用a时,我们就把这些对象作为一个对象(4个:串中有两个a、c我们把他们看做一个对象)。--->个人理解,详情请看:http://yangchao890.blog.163.com/blog/static/2185791120090221257225/

 

5、枚举
   作用:枚举就是让某个类型的变量的取值为若干个固定值的一个否则,编译器就会报错。枚举可以让编译器在编译时就可以控制程序中的非法值,普通变量的方式在开发阶段无法实现这一目标。

   *用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能
       1)、私有的构造方法
       2)、每个元素分别用一个公有的静态成员表示
       3)、可以有若干公有方法或抽象方法, 例如:要提供nextDay必须是抽象的。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。
    示例:
        EnumTest.java

        WeekDay weekday = WeekDay.MON;
        System.out.println(weekday.nextDay());
        System.out.println(weekday.toString());
 
        WeekDay.java

        public abstract class WeekDay {
        private WeekDay() {
  
        }
 
        public final static WeekDay SUN = new WeekDay() {

               @Override
               public WeekDay nextDay() {
                       return MON;
               }
  
         };
 
        public final static WeekDay MON = new WeekDay() {
  
              @Override
               public WeekDay nextDay() {
                     return SUN;
              }
         };
 
       public abstract WeekDay nextDay();
 
           /*public WeekDay nextDay() {
                    if (this == SUN) {
                         return MON;
                   } else {
                         return SUN;
                   }
              }*/
 
            public String toString() {
                   return this == SUN ? "SUN" : "MON";
            }
 
   *枚举的基本应用
    语法:public enum enum_name {
                   enum_value1,enum_value2,enum_value3......
            }

    常用静态方法:name、ordinal、valueof、values、toString
    总结:枚举是一个特殊的类,其中枚举中的每一个元素都是该类的一个实例对象。

   *枚举中的构造方法
    示例:
 public enum Number {
  one(1),  //调用的是第二个构造方法
  two(),  //调用的是第一个构造方法
  three,four;
  
  private Number() {}
  
  private Number(int order) {}
 }  
     注意:枚举中的构造方法必须是私有的 

   *带有抽象方法的枚举  
    示例:
 public enum TrafficLamp {
  RED(30){
   public TrafficLamp nextLamp() {
    return GREEN;
   }
  },
  
  GREEN(45){
   public TrafficLamp nextLamp() {
    return YELLOW;
   }
  },
  
  YELLOW(5){
   public TrafficLamp nextLamp() {
    return RED;
   }
  };
  
  public abstract TrafficLamp nextLamp();
  private int time;
  
  private TrafficLamp(int time) {
   this.time = time;
  }
 }  

   *枚举只有一个成员时,就可以作为一种单例的实现方式         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值