11级_Java_曹建波 9.17 Java SE 加强
2012-09-17 14:46
253 查看
Java SE 加强
JDK 5.0 新特性
“JDK 5.0”的一个重要主题就是通过新增一些特性来简化开发,这些特性包括:
静态导入
自动装包/拆包
for-each循环
可变参数
枚举
泛型
元数据
使用这些特性有助于编写更加清晰,精悍,安全的代码。
静态导入
JDK 1.5 增加的静态导入语法用于导入指定类的某个静态属性值(方法)或全部静态属性值(方法)
语法:
Import static 包名.类名.静态属性|静态方法|*
静态导入语句使用import static 语句
导入指定类的单个静态属性:
import static java.lang.System.out
导入指定类静态方法
import static java.lang.Math.max
导入指定类全部静态属性和方法
import static java.lang.Math.*
自动装箱/拆箱
自动装箱(autoboxing):把一个基本数据类型直接赋给对应的包装类变量, 或者赋给 Object 变量
自动拆箱:把包装类对象直接赋给一个对应的基本类型变量
典型应用:
Listlist = new ArrayList();
list.add(1);
intj = (Integer)list.get(0);
引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦!
因此JDK5中定义了一种新的语法——增强for循环,以简化此类操作。增强for循环只能用在数组、或实现Iterator接口的集合类上
使用 foreach 循环遍历数组和集合元素时, 无须获得数组和集合长度, 无须根据索引来访问数组元素和集合元素, foreach 循环自动遍历数组和集合的每个元素
语法格式:
for ( type 变量名:集合变量名 ) { … }
for(type varName : array | collection){
//varName 自动迭代访问每一个元素
}
可变参数
从 JDK 1.5 开始, Java 允许定义形参长度可变的参数,从而允许为方法指定数量不确定的形参
若在定义方法时, 在最后一个形参的类型后增加三点(…, ...位于变量类型和变量名之间,前后有无空格都可以)则表明该形参可以接受多个参数值, 多个参数值被当成数组传入
可变形参只能处于形参列表的最后, 所以一个方法最多只能有一个长度可变的形参
调用包含一个可变形参的方法时,可以为该形参传入多个参数或一个数组
调用可变参数的方法时, 编译器为该可变参数隐含创建一个数组, 在方法体中以数组的形式访问可变参数
枚举类
为什么需要枚举?
一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。
JDK 5新增的 enum 关键字用于定义一个枚举类。
枚举类
手动实现枚举类:
通过 private 将构造器隐藏起来
把这个类的所有可能实例都使用public static final 修饰
属性不应允许被改动, 所以应该使用 private final 修饰
上面写法比较麻烦,java中提供了一种更方便的方法----枚举类可以解决上面的问题
JDK 1.5 新增的 enum 关键字用于定义枚举类
枚举类也是一种特殊形式的Java类。
枚举类和普通类的区别:
使用 enum 定义的枚举类默认继承了 java.lang.Enum 类
枚举类的构造器只能使用private 访问控制符
枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾). 列出的实例系统会自动添加public static final 修饰
JDK5中扩展了switch语句,它除了可以接收int,byte, char, short外,还可以接收一个枚举类型
若枚举只有一个成员, 则可以作为一种单例模式的实现方式
枚举类的属性
枚举类对象的属性不应允许被改动, 所以应该使用 privatefinal 修饰
枚举类的使用 privatefinal 修饰的属性应该在构造器中为其赋值
若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数
枚举类常用的方法
Java中声明的枚举类,均是java.lang.Enum类的孩子,它继承了Enum类的所有方法。常用方法:
name():返回此枚举常量的名称,在其枚举声明中对其进行声明
ordinal():返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
valueof(Class enumClass, String name):返回带指定名称的指定枚举类型的枚举常量。 静态方法
values() 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便。
JDK 5.0 新特性
“JDK 5.0”的一个重要主题就是通过新增一些特性来简化开发,这些特性包括:
静态导入
自动装包/拆包
for-each循环
可变参数
枚举
泛型
元数据
使用这些特性有助于编写更加清晰,精悍,安全的代码。
静态导入
JDK 1.5 增加的静态导入语法用于导入指定类的某个静态属性值(方法)或全部静态属性值(方法)
语法:
Import static 包名.类名.静态属性|静态方法|*
静态导入语句使用import static 语句
导入指定类的单个静态属性:
import static java.lang.System.out
导入指定类静态方法
import static java.lang.Math.max
导入指定类全部静态属性和方法
import static java.lang.Math.*
自动装箱/拆箱
自动装箱(autoboxing):把一个基本数据类型直接赋给对应的包装类变量, 或者赋给 Object 变量
自动拆箱:把包装类对象直接赋给一个对应的基本类型变量
典型应用:
Listlist = new ArrayList();
list.add(1);
intj = (Integer)list.get(0);
引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦!
因此JDK5中定义了一种新的语法——增强for循环,以简化此类操作。增强for循环只能用在数组、或实现Iterator接口的集合类上
使用 foreach 循环遍历数组和集合元素时, 无须获得数组和集合长度, 无须根据索引来访问数组元素和集合元素, foreach 循环自动遍历数组和集合的每个元素
语法格式:
for ( type 变量名:集合变量名 ) { … }
for(type varName : array | collection){
//varName 自动迭代访问每一个元素
}
可变参数
从 JDK 1.5 开始, Java 允许定义形参长度可变的参数,从而允许为方法指定数量不确定的形参
若在定义方法时, 在最后一个形参的类型后增加三点(…, ...位于变量类型和变量名之间,前后有无空格都可以)则表明该形参可以接受多个参数值, 多个参数值被当成数组传入
可变形参只能处于形参列表的最后, 所以一个方法最多只能有一个长度可变的形参
调用包含一个可变形参的方法时,可以为该形参传入多个参数或一个数组
调用可变参数的方法时, 编译器为该可变参数隐含创建一个数组, 在方法体中以数组的形式访问可变参数
枚举类
为什么需要枚举?
一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。
JDK 5新增的 enum 关键字用于定义一个枚举类。
枚举类
手动实现枚举类:
通过 private 将构造器隐藏起来
把这个类的所有可能实例都使用public static final 修饰
属性不应允许被改动, 所以应该使用 private final 修饰
上面写法比较麻烦,java中提供了一种更方便的方法----枚举类可以解决上面的问题
JDK 1.5 新增的 enum 关键字用于定义枚举类
枚举类也是一种特殊形式的Java类。
枚举类和普通类的区别:
使用 enum 定义的枚举类默认继承了 java.lang.Enum 类
枚举类的构造器只能使用private 访问控制符
枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾). 列出的实例系统会自动添加public static final 修饰
JDK5中扩展了switch语句,它除了可以接收int,byte, char, short外,还可以接收一个枚举类型
若枚举只有一个成员, 则可以作为一种单例模式的实现方式
枚举类的属性
枚举类对象的属性不应允许被改动, 所以应该使用 privatefinal 修饰
枚举类的使用 privatefinal 修饰的属性应该在构造器中为其赋值
若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数
枚举类常用的方法
Java中声明的枚举类,均是java.lang.Enum类的孩子,它继承了Enum类的所有方法。常用方法:
name():返回此枚举常量的名称,在其枚举声明中对其进行声明
ordinal():返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
valueof(Class enumClass, String name):返回带指定名称的指定枚举类型的枚举常量。 静态方法
values() 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便。
相关文章推荐
- 11级_Java_曹建波 03.06 Struts2_ognl
- 11级_Java_曹建波 04.24 Spring的配置、生命周期、依赖注入bean的操作
- 11级_Java_曹建波 04.07 jQuery easyUI +struts2+hibernate+oracle 实现 admin用户的分页操作
- 11级_Java_曹建波 11.19 简单标签
- 11级_Java_曹建波3.26 Java 第一节环境的搭载
- 11级_Java_曹建波 09.26 注解
- 11级_Java_曹建波3.28 运算符和表达式
- 11级_Java_曹建波4.09 多态性&静态初始化块
- 11级_Java_曹建波 11.26 JDBC连接池
- 11级_Java_曹建波 02.27 Struts2_第二天
- 11级_Java_曹建波 10.30 Cookie2
- 11级_Java_曹建波4.17 数组
- 11级_Java_曹建波5.22 数据库和表
- 11级_Java_曹建波 11.30 文件下载
- 11级_Java_曹建波 03.04 Struts2的拦截器&验证器
- 11级_Java_曹建波5.30 WHERE子句
- 11级_Java_曹建波 10.19 Servlet2
- 11级_Java_曹建波4.26 集及其实现类&枚举器与数据操作
- 11级_Java_曹建波 03.13 Struts2&ajax实现用户名唯一验证案例
- 11级_Java_曹建波 04.07 jQuery easyUI tree +struts2+hibernate +mysql 实现 三级联动的案例