黑马程序员——高新技术--JDK1.5新特性(for循环增强、可变参数、静态导入、自动装拆箱、享元)

时间:2023-02-18 11:16:24

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

JDK一般升级目的:

1、简化书写。
2、提高效率。
3、增加安全性。

for循环增强:
格式:

for(数据类型 变量名 : 被遍历的集合或者数组)
{

}

对集合进行遍历。只能获取集合元素。但是不能对集合进行操作。
迭代器除了遍历,还可以进行remove集合中元素的动作。
如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。

public class VariableParameter {
public static void main(String[] args) {
System. out.println(add(1, 2));
System. out.println(add(1, 2, 3));
}

public static int add(int x, int... args){
int sum = x;

//增强型for循环
for(int arg : args){
sum += arg;
}
return sum;
}
}

传统for和高级for有什么区别呢?
高级for有一个局限性。必须有被遍历的目标。
建议在遍历数组的时候,还是希望是用传统for。因为传统for可以定义脚标。

可变参数:

一个方法接受的参数个数不固定时,使用重载的方式解决需要写多个重载的方法,而使用可变参数就可以避免这种情况。

其实就是数组参数的简写形式。只要将要操作的元素作为参数传递即可。它隐式将这些参数封装成了数组。

//定义可变参数,可以传任意个参数
public static void show(int... arr)
{
System.out.println(arr.length);
}
class ParamMethodDemo
{
public static void main(String[] args)
{
//传入任意个参数
show(3,4);
show(,2,3,4,5,6);
show(2,3,4,5,6,4,2,35,9);
}
}

在使用时注意:

  • 可变参数只能出现在参数列表的最后。
  • …位于变量类型和变量名之间,前后有无空格都可以。
  • 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

静态导入(JDK1.5):

  • import static java.lang.Math.max;//导入的是Math这个类中的max方法。
  • import static java.util.Arrays.*;//导入的是Arrays这个类中的所有静态成员。
    这时使用Arrays中的静态函数时,不用再加类名,可以直接使用。
    但有重名方法时,一定要使用类名甚至包名表明具体方法。

自动装箱:
java1.5之前:Integer num1 = new Integer(12);
必须用new Integer把12封装成一个Integer对象再赋给num1,

java1.5之后:Integer num1 = 12;
自动装箱功能会自动把12封装成Integer对象再赋给num1,而不用new Integer。

自动拆箱:

java1.5之前:System.out.println((int)num1+12);
Integer对象不支持加法运算,必须转换成基本数据类型才可以进行加法

java1.5之后:System.out.println(num1+12);
自动拆箱功能会把num1先拆成基本数据类型再进行运算