前言:
JDK5以后引入的新特性有:方法的可变参数、增强for循环、静态导入、泛型、自动拆装箱。。。。
自动拆装箱传送门:https://blog.csdn.net/weixin_38930706/article/details/80082997
泛型传送门:https://blog.csdn.net/weixin_38930706/article/details/80234087
增强for循环
增强for循环可以大大减少我们遍历对象时的操作代码数,而且不用调用迭代器。但是增强for循环
增强for循环的格式:
for(数据大类型 变量名 : 数组或者集合对象名){
输出变量即可!
}
输出变量即可!
}
例子:(部分代码)
import java.util.ArrayList; public class Test3 { public static void main(String[] args) { //创建集合对象和学生类对象 ArrayList<Student5> c =new ArrayList<Student5>() ; Student5 s1 = new Student5("aloha", 22) ; Student5 s2 = new Student5("alohaa", 222) ; Student5 s3 = new Student5("alohaaa", 2222) ; //添加到集合 c.add(s1); c.add(s2); c.add(s3); //增强for循环遍历c集合 for(Student5 stu : c) { System.out.println(stu.getName()+ "---"+ stu.getAge()); if(stu == s2) { c.add(new Student5("insert",22222)); } } } }
输出结果:
可以看出,使用增强for循环遍历虽然没有问题,但是若是在其中增加集合的添加功能,即在遍历集合的时候添加元素,会报出并发修改异常。但是对于数组,这样的问题不存在。
可变参数
适用于当一个方法的参数个数不确定时的参数个数定义。
格式: 修饰符 返回值类型 方法名(数据类型...变量名){...}
例子:
/** * 创建一个求未知个数的和的方法 * @author malaganguo * */ public class Test4 { public static void main(String[] args) { System.out.println("1+2+3+4+5 = "+add(1,2,3,4,5)); } //求未知个形式参数和的方法 public static int add(int ... a) { int sum = 0 ; for(int ad : a ) { sum += ad ; } return sum ; } }
结果:
静态导入
我们一般使用导入的快捷键Ctrl+Shift+o这个快捷键可以导入到类这个级别的包,那么JDK5以后提供仅导入某一个静态方法的级别,这要求我们知道那些方法时可以静态导入的。我们知道的静态方法较多的有Math、Arrays。
格式:import static 包名.类名.方法名;
例子:
import static java.lang.Math.abs; //导入到方法的级别 import static java.lang.Math.pow;
//可以使用带前缀的方式 System.out.println(java.lang.Math.abs(-100));
如果提前导入了静态方法的话,可以直接使用这个方法。
注意:如果当前类和我们导入的方法中都存在一个方法名相同的方法,那么,就近原则默认使用的是当前类中的方法,如果要使用导入的方法,那么必须得加上前缀区分。