java 5.0的新特性:
JAVA的发展史:
1.0 JAVA产生(Bug多)
1.2 成功
1.3 区别不大
1.4 nio--->无阻塞、反射、断言
5.0 Sun--->历经九年--->又名Tiger
1、自动封箱、自动解箱
2、静态导入
3、for--each 循环
4、枚举(5.0的关键字enum,相当于interface,class)
5、泛型(重点)
6、自增参数(...) 自增数组+自增参数(0--n)
7、元数据(注释) EJB 3.0中使用,项目中推广度一般
8、Scanner (格式化IO)
一、自动封箱、自动解箱 (课堂代码:AutoBox.java)
简单类型---->封装类
自动装箱时,小于127的数字==是成立的。
null无法自动解箱,null与0是两个概念
Long l2=23;先装箱,后赋值,Long不能是Integer
long l3=new Integer(23);先解箱,后赋值
二、for-each循环 (课堂代码:AutoBox.java)
优点:(1)简单(2)只读时首选(3)方式统一(可以处理集合,数组)
缺点:(1)不能同时操作两个或者以上的集合
(2)不支持修改、删除
不能在循环内构造Iterator,否则死循环:(课堂代码:TestIterator.java)
三、可变参数 (课堂代码:TestV.java)
用于取代数组,形式为:类型...
按数组处理,允许传递非数组的值(0--n个,中间用逗号分隔)
一个方法中,可变参数只允许出现一次(0--1),若出现则必须出现在最后一个参数的位置(位置固定在最后)
四、静态导入 (课堂代码:TestStatic.java)
(1)用于导入类中的静态属性和静态方法。
(2)格式:import static 包名.类名.属性名/方法名, 也可以用*代表所有的静态属性和静态方法,非静态的不行
(3)静态导入时,不允许导入同名的方法或属性。(不可重复)
(4)使用时可省略 类名. ,就像本类方法一样调用
不建议使用,使代码的可读性降低
五、格式化IO (课堂代码:TestScanner.java)
java.util.Scanner
六、枚举(enum) (课堂代码:AllColor.java,TestEnum.java)
列表、清单,可以用class/interface替代,但一般不替代,是一个特殊类。
(1)显示一些同类型的清单(例:Color)
(2)构造器可以有,但不能是public的。
(3)有私有的默认无参构造器,显示定义后会消失(和类一样)。
(4)属性、方法和类一样
(5)枚举是final的(对于外部来说无法继承),但是在枚举的内部可以去实现(Color)。
在enum中可以有抽象方法,但在清单中所有类都必须实现此抽象方法。