java7筆記

1 switch case 增長字符串類型,原理根據字符串hashcode以及string.equal比較
2 數值字面量改進
新增二進制數值字面量 0b000004,在數值中間新增下劃線方便閱讀2000_000
3 異常處理
增長addSuppressed 可以在觸發異常後,經過該方法將finally中的異常添加保存進去
改進了catch子句的語法,容許在其中指定多種異常
4 try-with-resource語句
管理一個資源
public class CustomeResource implements AutoCloseable {java

@Override
public void close() throws Exception {
// TODO Auto-generated method stub
System.out.println("進行資源釋放");
}正則表達式

public void useCustomeResource() throws Exception{
try(CustomeResource resource=new CustomeResource()){
System.out.println("使用資源");
}
}
}
管理兩個資源
try(InputStream input=new FileInputStream(fromPath);
OutputStream output=new FileOutputStream(toPath)
){
byte[] buffer=new byte[8192];
int len=-1;
while((len=input.read(buffer))!=-1){
output.write(buffer,0,len);
}
}
5 在虛擬機中增長對動態語言的支持
MethodType
針對原來的 invokespecial invokevirtual invokeinterface invokestatic增長了更加靈活的invokedynamic指令

6
6.1數據庫訪問
6.1.1 try-with-resource語句使用在數據庫資源釋放上
6.1.2 對RowSet的實現對象的建立作了更新,工廠方式建立,ResultSet中getObject方法時,能夠直接把結果類型傳遞進去等
6.1.3 數據庫鏈接超時與終止,在connection接口中新增setNetworkTimeout和abort兩個方法數據庫

6.2
6.2.1基本類型包裝類增長了compare方法,同時字符串內部化技術(包含相同字符串引用的相同的內部對象)被擴大到-128~127
6.2.2經過新增ProcessBuilder.Redirect類對進程的輸入和輸出重定向方式進行了統一,提供了兩種重定向類型,一種是原來的管道式,一種是繼承式,其餘三種是與文件相關的
6.2.3禁止了Thread的clone方法

6.3
6.3.1java.util中新增工具類Objects,Objects.compare相對對象的compare方法會對null進行判斷處理;Objects.equals;Objects.deepEqual;Objects.hash和Objects.hashCode結果不一樣;Objects.toString
6.3.2正則表達式支持命名捕獲分組,原來對捕獲分組的引用只支持出現順序的數字,如今能夠給每一個分組添加名字;對正則表達式新增\x來直接表示,\x和\u使用方式相似,只是容許表示的範圍更廣
6.3.3java.util.zip 容許選擇壓縮時緩存的中間結果的輸出方式,也支持顯示的制定壓縮文件的文件名和註釋所用的字符集;XMLEncoder增長構造方法,能夠更加精細的控制保存行爲
6.3.4獲取beaninfo時,定義獲取過程當中包含哪些類的信息或者獲取類中的哪些信息,java7後能夠同時配置使用兩項配置功能數組

7 多線程
7.1 java.util.concurrent包新增fork/join框架,相似map/reduce,目的是更好的利用多核和多處理器並行處理;在fork/join框架中,
區別於別的框架的在某個子問題遇阻時會處於等待狀態該框架會主動查找其餘還沒有運行的子問題來執行,另外在每一個子問題中應該避免使用sychonized關鍵詞或其餘方式進行同步,
也不該該使用阻塞式I/O操做或過多的訪問共享變量;惟一的同步只應該發生在子問題和建立它的父問題之間
7.2 新增多階段線程同步工具,Phaser類的特色是把多個線程協做執行的任務劃分紅多個階段,所提供的比之前的倒數閘門和循環屏障強
7.3 ThreadLocalRandom類中的隨機數是使用ThreadLocal類來實現的,避免了競爭問題緩存

8 泛型
引入泛型的動機是讓開發人員更安全地使用Java標準庫中的集合類
java中除了枚舉類型、匿名內部類、異常類型以外,其餘類型均可以添加形式類型參數成爲泛型類型
類型擦除是java中泛型的實現方式,泛型是在編譯器這個層次實現的,在java代碼中聲明的泛型類信息在編譯過程當中會被擦除,只保留不帶類型參數的形式;
java虛擬機在運行字節碼時不知道泛型類型的存在,字節碼中包含了泛型類型相關信息,在執行時時不被使用的
數組類型不一樣於集合類型的一個重要特徵是數組是協變的,eg一個數組元素類型是另外一個數組元素類型的子類型,那這個數組類型也是另外一個數組類型的子類型,這種協變關係對於集合類對象是不存在的,緣由在於類型擦除
在java7建立泛型對象調用構造方法時不須要顯示聲明類型,直接用<>代替,具體類型經過對象引用類型來進行判斷安全

相關文章
相關標籤/搜索