JDK现在都6了,从5开始JDK有了好些新的特性,平时在写程序的时候也用到但是没有认真的总结与分析一下,过年刚来没啥子事情就梳理一下,和大伙一起分享:
(其实在langspec-3.0中都有这些东西,我只是把自己平时用到的写出来)
1,静态导入
顾名思义就是把一些类的静态方法的使用方式进行一些改变,这个没啥意思,看例子:
先前我们使用类的静态方法是这个样子滴
//求1和2谁大
Math.max(1,2);
使用静态导入后
import static java.lang.Math.*;
max(1,2);
提防:需要注意的是默认包无法用静态导入,另外如果导入的类中有重复的方法和属性则需要写出类名,否则编译时无法通过。
2,可变参数
这个有点用可以提高代码质量
public getDetail(int pageNo,int pageSize,String ... args){
//function detail
}
提防:编译器会为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
3,加强的for循环
基本语法:
EnhancedForStatement:
for ( VariableModifiersopt Type Identifier: Expression) Statement
例子1(数组):
public getDetail(int pageNo,int pageSize,String ... args){
//function detail
for(String arg : args){
//do something
}
}
例子2(集合):
Map<String, Integer> histogram = ...;
double total = 0;
for (int i : histogram.values())
total += i;
for (Map.Entry<String, Integer> e : histogram.entrySet())
System.out.println(e.getKey() + " " + e.getValue() / total);
4,基本数据的封箱与拆箱
自动装箱:
Integer num = 13;
自动拆箱:
Int num = new Integer(13);
基本Boolean/Byte/Integer(数值范围:-128至127)数据类型的对象缓存:
Integer num1 = 13;
Integer num2 = 13;
System.out.println(num1 == num2);//结果为true
Integer num3 = 129;
Integer num4 = 129;
System.out.println(num3 == num4);//结果为false
待续.......