Java SE 加强for和枚举

时间:2021-04-01 19:41:50
l JDK 5.0  新特性
l“JDK  5.0” 的一个重要主题就是通过新增一些特性来简化开发,这些特性包括:
静态导入
自动装包/拆包
for-each循环
可变参数
枚举
泛型
元数据
l使用这些特性有助于编写更加清晰,精悍,安全的代码。

l JDK 1.5  增加的静态导入语法用于导入指定类的某个静态属性值 ( 方法 ) 或全 部静态属性值 ( 方法 )
l语法:
Import static包名.类名.静态属性|静态方法|*
l静态导入语句使用  import static 语句

导入指定类的单个静态属性:                             

  import static java.lang.System.out

导入指定类静态方法
 import static java.lang.Math.max
导入指定类全部静态属性和方法                                  
     import static java.lang.Math.*


Java SE 加强for和枚举


增强for循环

l引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦!
l因此JDK5中定义了一种新的语法——增强for循环,以简化此类操作。增强for循环只能用在 数组、或 实现 Iterator 接口的集合类上
l使用 foreach 循环遍历 数组和集合元素时, 无须获得数组和集合长度, 无须根据索引来访问数组元素和集合元素,  foreach  循环自动遍历数组和集合的每 个元素
l语法格式:
for ( type 变量名:集合变量名 )  { … }
            for(type varName : array | collection){
                  //varName  自动迭代访问每一个元素
            }
l

Java SE 加强for和枚举Java SE 加强for和枚举

Java SE 加强for和枚举Java SE 加强for和枚举

Java SE 加强for和枚举Java SE 加强for和枚举


l使用增强for循环的几个注意事项(以下程序的输出结果?)

int arr[] = new int[5];

for(int num : arr){

num = 1;

}

System.out.println(arr[0]);

------------------------------------------------------------

List<String> list = new ArrayList<String>();
list.add("xxx");
for(String str : list){
str = "yyy";
}
System.out.println(list.get(0));
l


引入:定义一个方法求数组中元素的和

Java SE 加强for和枚举

Java SE 加强for和枚举

可变参数

l从 JDK 1.5 开始,  Java  允许定义形参 长度可变 的参数,从而允许为方法指定 数量不确定的形参
l 若在定义方法时 最后 一个形参的类型后增加三点 ( , ... 位于变量类型和 变量名之间,前后有无空格都可以 ) 则表明该 形参可以接受多个参数值 多个 参数值被当成数组传入
l 可变形参只能处于形参列表的最后, 所以 一个方法最多只能有一个长度可变 的形参
l调用包含一个可变形参的方法时,  可以为该形参传入 多个参数或一个数组
l 调用可变参数的方法时 编译器为该可变参数隐含创建一个数组 在方法体中 以数组的形式访问可变参数
l

可变参数方法示例代码1
Java SE 加强for和枚举
Java SE 加强for和枚举

可变参数方法示例代码2

Java SE 加强for和枚举Java SE 加强for和枚举

可变参数方法示例代码3
Java SE 加强for和枚举
Java SE 加强for和枚举
可变参数方法示例代码4

l 测试JDK中具有可变参数的类Arrays.asList()方法。分别传多个参、传数组的情况
注意:传入基本数据类型数组的问题。
l
Java SE 加强for和枚举
Java SE 加强for和枚举

枚举类 
l为什么需要枚举?
一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义
带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。
lJDK 5新增的 enum 关键字用于定义一个枚举类。

枚举类引入
l枚举类练习
   设计一个Student类
   class  Student{
   private String name;
   private Grade grade;
   ……}
  要求:学生的grade只能是a,b,c,d,e五个级别。可以给学生设置成绩,并可以输出学生成绩情况(优,良,中,可,差)
Java SE 加强for和枚举
Java SE 加强for和枚举

Java SE 加强for和枚举
Java SE 加强for和枚举
Java SE 加强for和枚举
Java SE 加强for和枚举
Java SE 加强for和枚举
Java SE 加强for和枚举
Java SE 加强for和枚举
Java SE 加强for和枚举
Java SE 加强for和枚举
Java SE 加强for和枚举