最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中帶參數(shù)的try(){}語(yǔ)法含義詳解

 更新時(shí)間:2022年02月28日 11:29:05   作者:llkoio  
這篇文章主要介紹了java中帶參數(shù)的try(){}語(yǔ)法含義詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

帶參數(shù)的try(){}語(yǔ)法含義

帶資源的try語(yǔ)句(try-with-resource)

最簡(jiǎn)形式為

try(Resource res = xxx)//可指定多個(gè)資源
{
? ? ?work with res
} 

try塊退出時(shí),會(huì)自動(dòng)調(diào)用res.close()方法,關(guān)閉資源。

PS:在coreJava第9版的第一卷的486頁(yè)有解釋。

挺好用的語(yǔ)法,不用寫(xiě)一大堆finally來(lái)關(guān)閉資源,所有實(shí)現(xiàn)Closeable的類(lèi)聲明都可以寫(xiě)在里面,最常見(jiàn)于流操作,socket操作,新版的httpclient也可以;

需要注意的是

try()的括號(hào)中可以寫(xiě)多行聲明,每個(gè)聲明的變量類(lèi)型都必須是Closeable的子類(lèi),用分號(hào)隔開(kāi)。樓上說(shuō)不能關(guān)兩個(gè)流的落伍了

補(bǔ)充一下:在沒(méi)有這個(gè)語(yǔ)法之前,流操作一般是這樣寫(xiě)的:

InputStream is = null;
OutputStream os = null;
try {
?? ?//...
} catch (IOException e) {
?? ?//...
}finally{
?? ?try {
?? ??? ?if(os!=null){
?? ??? ??? ?os.close();
?? ??? ?}
?? ??? ?if(is!=null){
?? ??? ??? ?is.close();
?? ??? ?}
?? ?} catch (IOException e2) {
?? ??? ?//...
?? ?}
}?? ?

而現(xiàn)在你可以這樣寫(xiě):

try(
?? ?InputStream is = new FileInputStream("...");
?? ?OutputStream os = new FileOutputStream("...");
){
?? ?//...
}catch (IOException e) {
?? ?//...
}

生活一下就美好了

對(duì)try(){}的簡(jiǎn)單理解

以前使用try catch-finally都是捕獲異常,然后流關(guān)閉等等,代碼總是這樣的:

好比往FileOutputStream寫(xiě)東西

@Test
  public void test2() throws IOException {
    File file = new File("E://test");
    if (!file.exists()) {
      file.createNewFile();
    }
    FileOutputStream fileOutputStream = new FileOutputStream(file);
    try {
      System.out.println("do something...");
      fileOutputStream.write("aaa".getBytes());
      fileOutputStream.flush();
    } catch (Exception e) {
      System.out.println("do ...");
    } finally {
      fileOutputStream.close();
    }
  }

這樣寫(xiě)很難受,可以進(jìn)行優(yōu)化

將FileOutputStream fileOutputStream = new FileOutputStream(file)放到try()里面,也可以放多個(gè)

  @Test
  public void test2() throws IOException {
    File file = new File("E://test");
    if (!file.exists()) {
      file.createNewFile();
    }
   
    try( FileOutputStream fileOutputStream = new FileOutputStream(file);) {
      System.out.println("do something...");
      fileOutputStream.write("aaa".getBytes());
      fileOutputStream.flush();
    } catch (Exception e) {
      System.out.println("do ...");
    } 
  }

try()里每個(gè)聲明的變量類(lèi)型都必須是Closeable的子類(lèi),就一個(gè)close方法

相當(dāng)于系統(tǒng)自動(dòng)將關(guān)閉操作放到了finally里面而不需要我們自己寫(xiě)了,很nice

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決Spring或SpringBoot開(kāi)啟事務(wù)以后無(wú)法返回自增主鍵的問(wèn)題

    解決Spring或SpringBoot開(kāi)啟事務(wù)以后無(wú)法返回自增主鍵的問(wèn)題

    這篇文章主要介紹了解決Spring或SpringBoot開(kāi)啟事務(wù)以后無(wú)法返回自增主鍵的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java報(bào)NoClassDefFoundError異常的原因及解決

    Java報(bào)NoClassDefFoundError異常的原因及解決

    在 Java 開(kāi)發(fā)過(guò)程中, java.lang.NoClassDefFoundError 是一個(gè)令人頭疼的運(yùn)行時(shí)錯(cuò)誤,本文將深入探討這一問(wèn)題的原因和常見(jiàn)場(chǎng)景,并提供實(shí)用的解決方法,希望對(duì)大家有所幫助
    2025-03-03
  • SpringBoot部署與服務(wù)配置方式

    SpringBoot部署與服務(wù)配置方式

    這篇文章主要介紹了SpringBoot部署與服務(wù)配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • java文本處理之計(jì)算文本句子數(shù)

    java文本處理之計(jì)算文本句子數(shù)

    這篇文章主要為大家詳細(xì)介紹了java文本處理之計(jì)算文本句子數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Gauva使用ListenableFuture介紹說(shuō)明

    Gauva使用ListenableFuture介紹說(shuō)明

    并發(fā)是一個(gè)困難問(wèn)題,但是通過(guò)強(qiáng)大和強(qiáng)大的抽象能夠顯著的簡(jiǎn)化工作。為了簡(jiǎn)化問(wèn)題,Gauva使用ListenableFuture擴(kuò)展了JDK的Future接口,這篇文章主要介紹了Gauva使用ListenableFuture
    2023-01-01
  • java + dom4j.jar提取xml文檔內(nèi)容

    java + dom4j.jar提取xml文檔內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了java + dom4j.jar提取xml文檔內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 詳細(xì)說(shuō)明關(guān)于Java的數(shù)據(jù)庫(kù)連接(JDBC)

    詳細(xì)說(shuō)明關(guān)于Java的數(shù)據(jù)庫(kù)連接(JDBC)

    這篇文章主要介紹了詳細(xì)說(shuō)明關(guān)于Java的數(shù)據(jù)庫(kù)連接JDBC,JDBC是用Java語(yǔ)言向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • Java中處理I/O操作的不同方式

    Java中處理I/O操作的不同方式

    BIO、NIO和AIO是Java中處理I/O操作的三種不同方式,它們分別代表阻塞I/O、非阻塞I/O和異步I/O,本文我們結(jié)合代碼進(jìn)行一個(gè)綜合演示,代碼由于是偽代碼,可能存在不足,僅供大家參考
    2024-02-02
  • JAVA 根據(jù)Url把多文件打包成ZIP下載實(shí)例

    JAVA 根據(jù)Url把多文件打包成ZIP下載實(shí)例

    這篇文章主要介紹了JAVA 根據(jù)Url把多文件打包成ZIP下載的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • 一文詳解Java線程的6種狀態(tài)與生命周期

    一文詳解Java線程的6種狀態(tài)與生命周期

    一個(gè)線程在給定的時(shí)間點(diǎn)只能處于一種狀態(tài)。線程可以有6種狀態(tài):New、Runnable、Blocked、Waiting、Timed?waiting和Terminated。本文將詳細(xì)講解這6種狀態(tài),需要的可以參考一下
    2022-05-05

最新評(píng)論

永济市| 绥江县| 合川市| 乐亭县| 南通市| 台安县| 舒兰市| 集贤县| 肇东市| 旅游| 毕节市| 阳谷县| 垦利县| 化德县| 晋中市| 盈江县| 九台市| 东港市| 公安县| 九江县| 比如县| 德兴市| 昭通市| 鹿泉市| 马鞍山市| 澳门| 鹿泉市| 大新县| 比如县| 漯河市| 河曲县| 湖州市| 应城市| 买车| 交城县| 米脂县| 丹巴县| 海口市| 海口市| 南充市| 沁水县|