著作權說明: 本文由博主原創,轉載請注明出處,
原文地址: https://blog.csdn.net/qq_38688267/article/details/109511716
在我們編碼程序中,不可避免的會用到于檔案操作 IO 流、資料庫連接等開銷比較大的資源,用完之后需要通過 close 方法將其關閉,否則資源一直處于打開狀態,可能會導致記憶體泄露等問題,
拿檔案操作流舉例,我們在使用時要try catch,用完了在finally中關閉,而關閉的時候還需要再try catch,可以說是非常麻煩了!代碼如下:
/**傳統寫法**/
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(""));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
// DO something
} finally {
if(br != null) {
try {
br.close();
} catch (IOException e) {
// DO something
}
}
}
而我們的新姿勢是使用JDK1.7中的try-with-resources語法,直接上代碼:
/**使用語法糖**/
try (BufferedReader br1 = new BufferedReader(new FileReader(""))) {
String line;
while ((line = br1.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
// DO something
}
代碼是不是瞬間清爽了很多?趕緊用起來吧~
我們順便再來刨根究底一下吧,看下他編譯之后的樣子:
try {
BufferedReader br1 = new BufferedReader(new FileReader(""));
Throwable var7 = null;
try {
String line;
try {
while((line = br1.readLine()) != null) {
System.out.println(line);
}
} catch (Throwable var32) {
var7 = var32;
throw var32;
}
} finally {
if (br1 != null) {
if (var7 != null) {
try {
br1.close();
} catch (Throwable var31) {
var7.addSuppressed(var31);
}
} else {
br1.close();
}
}
}
} catch (IOException var34) {
}
其實背后的原理也很簡單,讓編譯器都幫我們做了關閉資源的作業而已,所以,再次印證了,語法糖的作用就是方便程式員的使用,最侄訓是要轉成編譯器認識的語言,
希望本文對大家有所幫助或啟發,碼字不易,覺得寫的不錯的可以點贊支持一下哦~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/205143.html
標籤:其他
上一篇:剛剛好,才是最理想的狀態
