JDk 5 之后的新特性

xiaoxiao2021-02-28  49

JDK 5 之后的新特性

    Jdk5以后的新特性:

    增强for,静态导入,可变参数,泛型......
(1)增强for循环
   格式:               for(数据大类型  变量名 : 数组或者集合对象名){                       输出变量即可!              }     增强for的出现时替代迭代器的,所以在遍历集合或者遍历数组就可以使用增强for去完成     增强for循环的弊端:如果集合的对象是null,如果再次对集合操作,就会出现异常           对集合进行判断,非空判断解决 public class Demo_01 { public static void main(String[] args) { //创建一个ArrayList集合 ArrayList<String> as=new ArrayList<String>(); //添加元素 as.add("aaa1"); as.add("aaa2"); as.add("aaa3"); as.add("aaa1"); //使用增强for循环遍历 for(String s : as) { System.out.println(s); } //定义一个数组 int[] s= {12,34,56,74,87,53}; //用增强for循环遍历 for(int x:s) { System.out.println(x); } } } 显示: aaa1 aaa2 aaa3 aaa1 12 34 56 74 87 53
 (2)可变参数:当一个方法的参数个数不确定的时候,要使用可变参数
格式:      修饰符    返回值类型  方法名(数据类型...变量名){  //数据类型后的三个点就是可变参数的表现形式          方法体 }  例如: //求数据的和 ppublic class Demo_02 { public static void main(String[] args) { int a=9; int b=4; int c=5; int d=7; int e=6; int f=23; int sum=plus(a,b,c,d,e,f); System.out.println(sum); } public static int plus(int x,int y) { int sum=0; sum=x+y; return sum; } public static int plus(int x,int y,int z) { int sum=0; sum=x+y+z; return sum; } public static int plus(int x,int y,int z,int t) { int sum=0; sum=x+y+z+t; return sum; } //当我们的参数不确定的情况下,就可以使用jdk5一个特性:可变参数,参数数据类型需相同 public static int plus(int...a) { //求和:将a是多个参数的,看成数组 //先定义最终结果变量 int sum = 0 ; //增强for遍历可变参数a for(int n :a) { sum += n ; } return sum; } } 结果:54
(3)静态导入
 特点:  1)前提是该方法必须是静态的  2)导入到的一个方法的级别 静态导入的格式:      import static 包名.类名.方法名; 用Math类来举例 import static java.lang.Math; //导入到包 Sysotem.out.println(Math.abs(100)); import static java.lang.Math.abs;//导入到方法的级别 Sysotem.out.println(abs(100)); System.out.println(java.lang.Math.abs(100));//可以直接导入 ,给方法加上前缀注意:本身当前的某个类中的方法名和需要被静态导入的方法名一样,必须加上前
 (4)泛型
  当ArrayList集合中存储了两种类型的元素分别String和Integer类型,在遍历的时候,使用的是String接收的,对于Integer类型就出现了异常! 数组直接定义了存储的类型,防止出现其他类型的元素,集合能不能也像数组一样,直接规定我们集合的存储类型,针对这种情况就提供了新技术:泛型      泛型只能是引用类型 泛型的好处:       1)将运行时期异常提前到了编译时期         2)优化了设计,解决了黄色警告线问题          3)避免了强制类型转换            4)泛型的引出可以提供程序的安全性! public class GenericDemo { public static void main(String[] args) { //创建集合对象 ArrayList<String> array = new ArrayList<String>() ; //添加元素 array.add("hello") ; array.add("world") ; array.add("java") ; //遍历 //获取迭代器 Iterator<String> it = array.iterator() ; while(it.hasNext()) { String s = it.next() ;//使用泛型此处不需要强制类型转换 System.out.println(s); } } } *泛型高级(通配符)  *<?>  :代表任意类型Object类型,或者任意的Java类  *<? extends E>:向下限定,E的子类或者E这个类型  *<? super E>:向上限定,E及其他的父类 //<?> :代表任意类型Object类型,或者任意的Java类 Collection<?> c4 = new ArrayList<Object>() ; Collection<?> c5 = new ArrayList<Animal>() ; Collection<?> c6 = new ArrayList<Dog>() ; Collection<?> c7= new ArrayList<Cat>() ; <? extends E>:向下限定,E的子类或者E这个类型 Collection<? extends Object> c8 = new ArrayList<Object>() ; Collection<? extends Object> c9 = new ArrayList<Animal>() ; Collection<? extends Object> c10 = new ArrayList<Cat>() ; Collection<? extends Aninal> c11 = new ArrayList<Object>() ;//报错 <? super E>:向上限定,E及其他的父类 Collection<? super Animal> c12 = new ArrayList<Cat>() ;//报错 Collection<? super Animal> c13 = new ArrayList<Animal>() ; Collection<? super Animal> c14 = new ArrayList<Object>() ;         
转载请注明原文地址: https://www.6miu.com/read-1950290.html

最新回复(0)