中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java的示例分析

發布時間:2021-05-27 10:33:52 來源:億速云 閱讀:87 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Java的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1、try with catch

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

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的比前一種方法明顯節省了很多代碼,資源在try后邊的()中生成,在try結束后程序會自動關閉資源

如果需要聲明多個資源,可以在try后面的()中,以;分隔;也就是說,try后邊的()可以添加多行語句, 我上篇文章有展示:你肯定能看懂的Java IO相關知識總結

2、instance of

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

用法:
result = object instanceof class
參數:
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、不定項參數 ...

格式如下:

參數個數可以0或者多個

public void method(int...args);

業務場景:

1、在業務開發的時候經常之前寫一個方法,但是后來業務變動了,需要增加參數,這個時候可以使用這種方式,多傳參數,調用的地方不需要覆蓋

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

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

調用的三種方式

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

4、跳出多層循環的label

Java 中的標簽是為循環設計的,是為了在多重循環中方便的使用 break 和coutinue ,當在循環中使用 break 或 continue 循環時跳到指定的標簽處

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表達式僅僅是調用一些已經存在的方法,除了調用動作外,沒有其他任何多余的動作

Java的示例分析

package org.pdool;
 
import java.util.ArrayList;
import java.util.List;
 
/**
* 方法引用測試類
* @author 香菜
*/
public class Trytest {
   static List<Player> playerList = new ArrayList<>();
 
   // 靜態方法
   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、靜態方法引用
       strList.forEach(Trytest::print);
       // /2、對象方法引用
       strList.forEach(System.out::println);
       // 3、構造函數
       strList.forEach(Player::new);
       // 4、對象方法
       playerList.forEach(Player::printName);
  }
}

總結:

1、在try結束后程序會自動關閉資源

2、instance of 必須是子類

3、參數個數可以0或者多個,重構代碼利器

4、使用 break 或 continue 循環時跳到指定的標簽處

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

關于“Java的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇雄县| 大同市| 图木舒克市| 长宁区| 安溪县| 信丰县| 沈阳市| 三穗县| 江源县| 贵德县| 五莲县| 乌兰县| 莱西市| 长泰县| 盐亭县| 郯城县| 琼结县| 苗栗县| 海丰县| 勃利县| 徐闻县| 苍梧县| 新源县| 开远市| 赤城县| 锡林郭勒盟| 谷城县| 福安市| 唐海县| 和田市| 新丰县| 辽阳县| 桓仁| 西华县| 崇仁县| 沂水县| 天祝| 亚东县| 阿巴嘎旗| 福泉市| 曲阳县|