欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的這些騷操作你不能不知道!!!

 更新時間:2021年07月15日 11:03:50   作者:香菜聊游戲  
今天在看python相關(guān)的東西,看到各種騷操作,回頭想了下Java有沒有什么騷操作,整理下面幾種,一起看一下吧,希望能給你帶來幫助

1、try with catch

還記得這樣的代碼嗎?我們需要手動的關(guān)閉資源的流,不然會造成資源泄漏,因為虛擬機無法管理系統(tǒng)資源的關(guān)閉,必須手動釋放。

public void manualClose(String fileName) {
  BufferedReader reader = null;
  try {
      String line;
      reader = new BufferedReader(new FileReader(fileName));
      while ((line = reader.readLine()) != null) {
          ...
      }
  } catch (Exception e) {
      ...
  } finally {
      if (reader != null) {
          try {
              reader.close();
          } catch (IOException e) {
              ...
          }
      }
  }
}

騷操作解救你:

public void autoClose(String fileName) {
  try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
      String line;
      while ((line = reader.readLine()) != null) {
          ...
      }
  } catch (Exception e) {
      ...
  }
}

可以看到,try-with-resources的比前一種方法明顯節(jié)省了很多代碼,資源在try后邊的()中生成,在try結(jié)束后程序會自動關(guān)閉資源。

如果需要聲明多個資源,可以在try后面的()中,以;分隔;也就是說,try后邊的()可以添加多行語句, 我上篇文章有展示:《保姆系列五》原來JavaIO如此簡單,驚呆了

2、instance of

對象是否是這個特定類或者是它的子類的一個實例,返回一個布爾值。左邊是對象,右邊是類;當(dāng)對象是右邊類或子類所創(chuàng)建對象時,返回true;否則,返回false。

用法:
result = object instanceof class
參數(shù):
Result:布爾類型。
Object:必選項。任意對象表達式。
Class:必選項。任意已定義的對象類。
public interface Monster {
  }
   public static class Dinosaur implements Monster{
  }
   public static void main(String[] args) {
       Dinosaur dinosaur = new Dinosaur();
       System.out.println(dinosaur instanceof Monster);
  }

3、不定項參數(shù) ...

格式如下:

參數(shù)個數(shù)可以0或者多個

public void method(int...args);

業(yè)務(wù)場景:

1、在業(yè)務(wù)開發(fā)的時候經(jīng)常之前寫一個方法,但是后來業(yè)務(wù)變動了,需要增加參數(shù),這個時候可以使用這種方式,多傳參數(shù),調(diào)用的地方不需要覆蓋

2、如果一個方法的的不確定參數(shù)個數(shù)的情況,通常來說我們會重載,但是如果多了很麻煩,這個時候...可以出場了

//方法重載,解決參數(shù)個數(shù)不確定問題
  public void method(){};
  public void method(int i){};
  public void method(int i, int j){};
  public void method(int i, int j, int k){};
優(yōu)化之后的形式:
public void method(int i,int ...args);

調(diào)用的三種方式

  public void call(){
      //1、 不使用變參
      method(1);
      //2、 直接調(diào)用
      method(1,2,23,4,5,6);
      //3、 數(shù)組調(diào)用
      int[] arr = {1,2,23,4,5,6};
      method(5,arr);
  }

4、跳出多層循環(huán)的label

Java 中的標(biāo)簽是為循環(huán)設(shè)計的,是為了在多重循環(huán)中方便的使用 break 和coutinue ,當(dāng)在循環(huán)中使用 break 或 continue 循環(huán)時跳到指定的標(biāo)簽處

public static void main(String[] args) {
       for (int i = 0; i < 5; i++) {
           labelA: for (int j = 0; j < 5; j++) {
               for (int k = 0; k < 5; k++) {
                   if (k == 1) {
                       break labelA;
                  }
                   System.out.println(1);
              }
          }
      }
  }

不推薦這種用法,雖然很騷,但是老老實實的一層一層break 比較好,你覺得吶?

5、方法引用

用Lambda表達式僅僅是調(diào)用一些已經(jīng)存在的方法,除了調(diào)用動作外,沒有其他任何多余的動作

圖片

package org.pdool;
import java.util.ArrayList;
import java.util.List;
/**
* 方法引用測試類
* @author 香菜
*/
public class Trytest {
   static List<Player> playerList = new ArrayList<>();
   // 靜態(tài)方法
   public static void print(String s) {
       System.out.println(s);
  }
   static class Player {
       private String name;
       public Player(String name) {
           this.name = name;
           playerList.add(this);
      }
       private void printName() {
           System.out.println(name);
      }
  }
   public static void main(String[] args) {
       List<String> strList = new ArrayList<>();
       strList.add("香菜");
       strList.add("follow me");
       // 1、靜態(tài)方法引用
       strList.forEach(Trytest::print);
       // /2、對象方法引用
       strList.forEach(System.out::println);
       // 3、構(gòu)造函數(shù)
       strList.forEach(Player::new);
       // 4、對象方法
       playerList.forEach(Player::printName);
  }
}

總結(jié):

1、在try結(jié)束后程序會自動關(guān)閉資源

2、instance of 必須是子類

3、參數(shù)個數(shù)可以0或者多個,重構(gòu)代碼利器

4、使用 break 或 continue 循環(huán)時跳到指定的標(biāo)簽處

5、方法調(diào)用是除了調(diào)用動作外,沒有其他任何多余的動作

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 關(guān)于spring中事務(wù)的傳播機制

    關(guān)于spring中事務(wù)的傳播機制

    這篇文章主要介紹了關(guān)于spring中事務(wù)的傳播機制,所謂事務(wù)傳播機制,也就是在事務(wù)在多個方法的調(diào)用中是如何傳遞的,是重新創(chuàng)建事務(wù)還是使用父方法的事務(wù),需要的朋友可以參考下
    2023-05-05
  • Spring SpringMVC在啟動完成后執(zhí)行方法源碼解析

    Spring SpringMVC在啟動完成后執(zhí)行方法源碼解析

    這篇文章主要介紹了SpringMVC在啟動完成后執(zhí)行方法源碼解析,還是非常不錯的,在這里分享給大家,需要的朋友可以參考下。
    2017-09-09
  • Spring框架構(gòu)造注入操作實戰(zhàn)案例

    Spring框架構(gòu)造注入操作實戰(zhàn)案例

    這篇文章主要介紹了Spring框架構(gòu)造注入操作,結(jié)合具體實例形式分析了spring框架構(gòu)造輸入的相關(guān)定義與使用操作技巧,需要的朋友可以參考下
    2019-11-11
  • java BigDecimal精度丟失及常見問分析

    java BigDecimal精度丟失及常見問分析

    這篇文章主要為大家介紹了java BigDecimal精度丟失及常見問分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • RocketMQ設(shè)計之異步刷盤

    RocketMQ設(shè)計之異步刷盤

    本文介紹RocketMQ設(shè)計之異步刷盤,RocketMQ消息存儲到磁盤上,這樣既保證斷電后恢復(fù),也讓存儲消息量超出內(nèi)存限制,RocketMQ為了提高性能,會盡可能保證磁盤順序?qū)?消息通過Producer寫入RocketMQ的時候,有兩種方式,上篇介紹了同步刷盤,本文介紹異步刷盤,需要的朋友可以參考下
    2022-03-03
  • SpringBoot使用POI進行Excel下載

    SpringBoot使用POI進行Excel下載

    這篇文章主要為大家詳細(xì)介紹了SpringBoot使用POI進行Excel下載,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • SpringBoot2.x實現(xiàn)給Controller的RequestMapping添加統(tǒng)一前綴

    SpringBoot2.x實現(xiàn)給Controller的RequestMapping添加統(tǒng)一前綴

    這篇文章主要介紹了SpringBoot2.x實現(xiàn)給Controller的RequestMapping添加統(tǒng)一前綴,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • spring如何通過FactoryBean配置Bean

    spring如何通過FactoryBean配置Bean

    這篇文章主要介紹了spring如何通過FactoryBean配置Bean,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • ssm框架controller層返回json格式數(shù)據(jù)到頁面的實現(xiàn)

    ssm框架controller層返回json格式數(shù)據(jù)到頁面的實現(xiàn)

    這篇文章主要介紹了ssm框架controller層返回json格式數(shù)據(jù)到頁面的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java集合 collection-list-LinkedList詳解

    java集合 collection-list-LinkedList詳解

    下面小編就為大家?guī)硪黄猨ava集合 collection-list-LinkedList詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01

最新評論