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 {}