首先是模塊化特性:如今的Java7也是採用了模塊的劃分方式來提速,一些不是必須的模塊並無下載和安裝,所以在使用全新的Java7的虛擬機的時候會發現真的很快,當虛擬機需 要用到某些功能的時候,再下載和啓用相應的模塊,這樣使得最初須要下載的虛擬機大小獲得了有效的控制。同時對啓動速度也有了很大的改善。若是你對 OpenJDK的架構比較熟悉,你甚至能夠定製JDK的模塊。java
其次是多語言支持:這裏的多語言不是指中文英文之類的語言,而是說Java7的虛擬機對多種動態程序語言增長了 支持,好比:Rubby、 Python等等。對這些動態語言的支持極大地擴展了Java虛擬機的能力。對於那些熟悉這些動態語言的程序員而言,在使用Java虛擬機的過程當中一樣可 以使用它們熟悉的語言進行功能的編寫,而這些語言是跑在功能強大的JVM之上的。程序員
再有是開發者的開發效率獲得了改善:Java7經過多種特性來加強開發效率。好比對語言自己作了一些細小的改變 來簡化程序的編寫,在多線程併發與控制方面:輕量級的分離與合併框架,一個支持併發訪問的HashMap等等。經過註解加強程序的靜態檢查。提供了一些新 的API用於文件系統的訪問、異步的輸入輸出操做、Socket通道的配置與綁定、多點數據包的傳送等等。安全
最後是執行效率的提升,也是給人感受最真切體驗的特性:壓縮了64位的對象指針,Java7經過對對象指針由 64位壓縮到與32位指針相匹配的技術使得內存和內存帶塊的消耗獲得了很大的下降於是提升了執行效率。此外還提供了新的垃圾回收機制(G1)來下降垃圾回 收的負載和加強垃圾回收的效果。G1垃圾回收機制擁有更低的暫停率和更好的可預測性。多線程
一、switch中可使用字串,在以前的版本中是不支持在Switch語句塊中用String類型的數據的,這個功能在C#語言中早已被支持。架構
注意:在把字符串傳進Switch case以前,別忘了檢查字符串是否爲Null。併發
String s = "test"; switch (s) { case "test" : System.out.println("test"); case "test1" : System.out.println("test1"); break ; default : System.out.println("break"); break ; }
二、"<>"這個玩意兒的運用List<String> tempList = new ArrayList<>(); 即泛型實例化類型自動推斷。框架
三、對集合的支持對集合的支持對集合的支持對集合的支持,摒棄了Java集合接口的實現類,如:ArrayList、HashSet和HashMap。而是直接採用[]、{}的形式存入對象,採用[]的形式按照索引、鍵值來獲取集合中的對象異步
List <String> list = ["item1","item2","item3"]; String item = list[0]; Set <String> set = {"item","haha","kaka"}; Map <String,Integer> map = {"key" : 1,"key2":2}; int value = map["key"];
四、數值可加下劃線編輯器
int one_million = 1_000_000;
五、支持二進制文字模塊化
你可用做二進制字符前加上 0b 來建立一個二進制類型。
int binary = 0b1001_1001;
六、簡化了可變參數方法的調用
當程序員試圖使用一個不可具體化的可變參數並調用一個*varargs* (可變)方法時,編輯器會生成一個「非安全操做」的警告。
七、對資源的自動回收管理
下面的代碼看起來有點麻煩 … 不是嗎? BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { br.close(); } 相信你必定會喜歡下面這種寫法。 try (BufferedReader br = new BufferedReader(new FileReader(path)) {return br.readLine();})
8、簡化了可變參數方法的調用
九、一個catch裏捕捉多個異常類型
try { Here comes your code.... }catch(IOException | NullPointerException | ..........) { .... }
十、新增一些取環境信息的工具方法
File System.getJavaIoTempDir() // IO臨時文件夾 File System.getJavaHomeDir() // JRE的安裝目錄 File System.getUserHomeDir() // 當前用戶目錄 File System.getUserDir() // 啓動java進程時所在的目錄
十一、Boolean類型反轉,空指針安全,參與位運算
Boolean Booleans.negate(Boolean booleanObj) True => False , False => True, Null => Null boolean Booleans.and(boolean[] array) boolean Booleans.or(boolean[] array) boolean Booleans.xor(boolean[] array) boolean Booleans.and(Boolean[] array) boolean Booleans.or(Boolean[] array) boolean Booleans.xor(Boolean[] array)
十二、兩個char間的equals
boolean Character.equalsIgnoreCase(char ch1, char ch2);
1三、安全的加減乘除
int Math.safeToInt(long value) int Math.safeNegate(int value) long Math.safeSubtract(long value1, int value2) long Math.safeSubtract(long value1, long value2) int Math.safeMultiply(int value1, int value2) long Math.safeMultiply(long value1, int value2) long Math.safeMultiply(long value1, long value2) long Math.safeNegate(long value) int Math.safeAdd(int value1, int value2) long Math.safeAdd(long value1, int value2) long Math.safeAdd(long value1, long value2) int Math.safeSubtract(int value1, int value2)