java1.5版本后出现的新特性:
一、静态导入
import语句可以导入一个类或某个包中的所有类
例如:import java.io.*;
在java1.5新特性
import static语句导入一个类中的某个静态方法或所有静态方法
例如:ipmort static java.io.*;
这两者的区别,import导入包中的类后调用类中的静态方法,用类名.静态方法
import导入包中的所有静态方法后,直接用静态方法即可。
注意:静态导入是java1.5以后出现的新特性,在eclipse中要想使用静态导入,编译和运行环境一定要记得配置为JDK1.5以后的版本。
二、可变参数
当一个方法接受的参数个数不固定,例如:System.out.println(countScore(2,3,5)); System.out.println(countScore(1,2,3,5));中countScore方法里的参数个数不固定,为了实现多个不确定参数的方法,我们可以用可变参数来解决以前需要重载多个方法来实现的难题。countSocre(int... args);
可变参数的特点:
1.只能出现在参数列表的最后;
2....位于变量类型和变量名之间,前后有无空格都可以;
3.调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
示例:
public static void main(String[] args)
{
System.out.println(countScore(2,3,5));
System.out.println(countScore(1,2,3,5));
}
public static int countScore(int...args)
{
int sum = 0;
for(int x = 0 ; x<args.length ; x++)
{
sum+=args[x];
}
return sum;
}
eclipse小技巧:Ctrl+Shift+/将用鼠标划取的代码加注释。
三、加强for循环
加强for循环格式:for ( type 变量名:集合变量名 ) { … }
注意事项: 1.迭代变量必须在( )中定义。
2.集合变量可以是数组或实现了Iterable接口的集合类。
上述例子的for循环也可以用加强for循环写作:
for(int arg :args)
{
sum+=arg;
}
四、基本数据类型的自动拆箱和装箱及享元模式
Integer i1 = 2;将基本数据类型自动装箱成Integer对象。
System.out.println(i1+12);将i1这个Integer对象自动拆箱成基本数据类型与基本数据类型相加。
Integer i2 = 23;Integer i3 = 23;i2和i3是同一个对象。在一个字节内-128至127之间的数,被装箱成一个Integer对象后,会被存放在缓存池内,下次需要再将一个整数(字节内)创建Integer对象时,先在缓存池中找是否已有这个对象,如果有直接用这个已有的对象,这样节约内存空间,这种设计模式称之为享元模式(flyweight)。
享元模式:有很多个小的对象,它们有很多属性相同,可以把它们变成一个对象,那些不同的属性把它们变成方法的参数,称之为外部状态,那些相同的属性称之为内部状态。
|