1.JAVA5新特性
1.1泛型Generics
//设置集合的传入传出类型,装入集合后会擦除类型,传入或传出不同类型会报错,保证数据类型的安全
List<Integer> nums = new ArrayList<Integer>();
1.2枚举类型
1.3自动装箱拆箱
例:
Integer i = 1; //装箱,基本数据类型自动包装类型
int j = i; //拆箱 ,包装类型自动转基本数据类型
1.4可变参数
例:
public void add(int... nums){ //3个点表示一种类型的数组
int sum = 0;
for (int i : nums){
sum+=i;
}
System.out.println("总数 = " + sum);
}
1.5Annotations
1.6加强for循环
例:List<User> users = new ArrayList<User>
for(User user : Users){
//遍历
}
1.7静态导入
import static java.lang.System.out;
public class Test {
public static void main(String[] args) {
//静态导入后,直接使用类的静态成员
out.println("hello world");
}
}
1.8JUC
2.Java6新特性
2.1JDBC4.0
变化不明显
3.Java7新特性
3.1 switch中可以使用字串了
3.2 泛型实例化类型自动推断
例:
List<String> tempList = new ArrayList<>();
3.3Try-with-resource语句
例:
try (BufferedReader br = new BufferedReader(new FileReader(path))
{ //实现资源的自动关闭
return br.readLine();
}
3.4数字字面量下划线支持
例:int one_million = 1_000_000;
3.5 新增一些取环境信息的工具方法
例:
File System.getJavaIoTempDir() // IO临时文件夹
File System.getJavaHomeDir() // JRE的安装目录
File System.getUserHomeDir() // 当前用户目录
File System.getUserDir() // 启动java进程时所在的目录
3.6 使用一个catch语言来处理多种异常类型
例:
public static void main (String[] args) throws Exception {
try {
...//用|分割
} catch (IOException | SQLException ex) {
throw ex;
}
}
3.7 支持将整数类型用二进制来表示,用0b开头。
例:
byte aByte = (byte) 0b00100001;
int anInt1 = 0b10100001010001011010000101000101;
4.1 接口的默认方法,只需要使用 default关键字即可
例子:
interface Formula {
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}}Formula formula = new Formula() {
@Override
public double calculate(int a) {
return sqrt(a * 100);
}};
4.2Lambda 表达式
例:
Collections.sort(names, (String a, Stringb) -> {
return b.compareTo(a);
});
4.3函数式接口
例:
//函数式接口
@FunctionalInterfaceinterface Converter<F, T> {Tconvert(F from);
}//定义具体实现
Converter<String, Integer> converter= (from) -> Integer.valueOf(from);
Integer converted =converter.convert("123");
System.out.println(converted);
4.4方法与构造函数引用
例:
//通过::来进行访问具体的方法
Converter<String, Integer> converter= Integer::valueOf;Integer converted =converter.convert("123");
System.out.println(converted);
4.5全新Date API
例:
// 当前日期yyyy-MM-dd
LocalDate localDate = LocalDate.now();
//当前时间
LocalTime localTime = LocalTime.now();
// 当前日期时间
LocalDateTime localDateTime = LocalDateTime.now();
4.6多重Annotation 注解
例:
@interface Hints {Hint[] value();}//嵌套使用@Repeatable(Hints.class)@interface Hint {String value();}//具体使用@Hint("hint1")
@Hint("hint2")
class Person {}