java基础加强_01_Java 1.5 新特性

 Java 1.5 新特性

1,可变参数

   可变参数特点:

   1只能在参数列表的最后

   2...位于变量类型和变量名之间,前后有无空格都可以

 3调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,  

      在方法体中以数组的形式访问可变参数

如:

public int add(int x,int  args)

{

  sum = x;

  for(int i = 0;i<args.length;i++)

  {

sum = sum+args[i];

  }

             return sum;

}

   4,当方法重载时,方法里类型不知道有多少个,可以使用可变参数 ... 

   5,是数组参数的简写,可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数

 

  Override 与 Overload

     Override :注释。表示一个方法重写。如果方法使用了这个注释而没有重写超类的方法,则编译器会报错。

  注意:如果父类的这个方法是私有的,那么就不叫重写,因为子类不知道父类有这个方法。

  Overload :重载。方法同名,但参数列表个数不一致。

  注:如果方法返回类型不一样,就不叫重载。

 

2 , 高级 for 循环 

对于集合,数据的另一种输出方式。

格式:for(数据类型 变量名:被遍历的集合(Collection)或者数组)

{

 

} 

高级for和迭代器区别?

高级for对集合进行遍历,只能获取集合元素,不能对集合进行操作。

迭代器除了遍历,还可以进行remove集合中元素的动作。

如果使用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。

传统for和高级for有什么区别呢?

高级for有一个局限性,必须有被遍历的目标。

  (比如:打印Hello 一百遍,高级for 无法完成)

   建议在遍历数组的时候,还是希望使用传统for,因为传统for可以有脚标可操作

 

3,静态导入

静态导入可以导入静态方法,那么程序中就可以直接使用这些静态类中的方法。

如:import static java.util.Arrays.*;     //导入Arrays 类中的所有静态成员。

     import static java.lang.System.*; 

          Arrays.sort(arr);    //导入包后,可简写代码,可改为  sort(arr);

注意:如果在Java5以下,那么静态导入等jdk1.5新特性都会报告错误。

 

4 , 基本数据的自动拆箱、装箱

      如:

Integer in = 3;    // 会自动装箱

System.out.println(  in + 14 );    //会进行自动拆箱,然后进行运算。 结果:17

 

Integer i1 = 12;

Integer i2 = 12;

System.our.println( i1 = i2 );  //返回 true 

 

Integer i3 = 129;

Inreger i4 = 129;

System.out.println( i3 = i4 );  //返回false

 

 注意:Integer 在-128 ~ 127 使用的对象是同一个。类似于享元模式。

 

5枚举

     枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象。枚举可以让某个类型的变量的取值只能为若干个因定值中的一个,枚举可以让编译器在编写代码时期就能判断其代码正确与否。

 

  为什么要有枚举?

  像有一些须要固定值来描述,且不让更改。如:定义的星期几或性别等。假用1-7 分别来表示星期一到星期日,但如果有人写成了 int weekday = 0; 以为是星期一那怎么办?所以须要枚举来限制weekday 只能取 对应的几个固定值。

 

   使用enum枚举类的特点:

       1类默认继承了 java.lang.Enum 类

                 2,参数列表必须放在第一行。

         3,参数列表是其类的子类。

        4,底层已完成了对toString()方法的复写。

        5,参数列表底层已完成了初始化。

        6,属性的修饰关键字无须书写,底层已完成。

        7构造方法必须定义成私有的

        8,和普通 Java 类一样枚举类可以实现一个或多个接口。

        9,若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式则可以让每个枚举值分别来实现该方法。

        10,枚举类对象的属性不应允许被改动。

        11JDK 1.5 中可以在 switch 表达式中使用枚举类的对象作为表达式, case 子句可以直接使用枚举值的名字, 无需添加枚举类作为限定

        12如果枚举里只有一个成员时,同单例设计模式一样,可以作为一个单例来使用。

 

    用枚举来写单例的好处:构造方法不用写

 

     用普通类如何实现枚举功能?

1,私有的构造方法

2,每个元素分别用一个公有的静态成员变量表示

3,可以有若干个公有方法或抽象方法,例如,要提供nextDay方法必须是抽象的。

 

注意:采用抽象方法定义nextDay() 可以避免大量的if...else 语句

 

更多关于枚举的请看基础加强---枚举篇

 

6,泛型

      用于解决安全问题,是一个类型安全机制。

      好处:

      1,将运行时期出现问题ClassCastException 异常 转移到了编译时期方便于程序员解决问题,让运行时间问题减少,安全

      2,避免了强制转换麻烦

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值