<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java的基本使用之核心類

      1、StringBuilder類

      在 Java 中,我們可以使用 + 來拼接字符串,類似于下面的代碼:

      String s = "";
      for (int i = 0; i < 1000; i++) {
          s = s + "," + i;
      }

      但是在每次循環中都會創建新的字符串對象(因為字符串是不可變的),然后扔掉舊的字符串。這樣,絕大部分字符串都是臨時對象,不但浪費內存,還會影響GC效率。

      為了能高效拼接字符串,Java標準庫提供了StringBuilder,它是一個可變對象,可以預分配緩沖區,這樣,往StringBuilder中新增字符時,不會創建新的臨時對象:

      StringBuilder sb = new StringBuilder(1024);
      for (int i = 0; i < 1000; i++) {
          //StringBuilder可以進行鏈式操作
          sb.append(',').append(i);
      }
      String s = sb.toString();

      對于一般的字符串操作,我們可以不必將其改寫為 StringBuilder,在對字符串進行頻繁的插入、刪除等操作時可以將其改寫成 StringBuilder。

       

      2、JavaBean

      JavaBean 是一種符合命名規范的 class,也就是說,只要符合這些命名規范的類,都可以稱之為 JavaBean。

      JavaBean 的命名規范:

      1. JavaBean 類必須是一個公共類,即訪問修飾符為 public
      2. JavaBean 類必須有一個空的構造函數,類中必須有一個無參的public構造方法
      3. JavaBean類不應有公共實例變量,類變量都應該是 private
      4. 屬性應該由一組讀寫方法(getXxx 和 setXxx)來訪問,一個 JavaBean 對象的屬性可以是可讀寫、或只讀、或只寫。可以用IDE來為屬性自動生成 getter / setter 方法。(如果操作的字段為boolean類型,此時的讀方法不應該命名為 getter 方法,而是 is 方法,例如把 getTrue 變成 isTrue)

      比如:

      public class Person {
          private String age;
          private boolean man;  
      
          public String getAge() { return this.age; }
          public void setAge(String age) { this.age= age; }
      
          public boolean isMan(){};    // 讀方法
          public void setMan(boolean value){}  // 寫方法
      
          //屬性只需要定義getter和setter方法,不是一定需要有對應的字段即成員變量。比如這個類中就沒有下面對應的child字段
          public boolean isChild() {
              return age <= 6;
          }
      }

      我們通常把一組對應的讀方法(getter)和寫方法(setter)稱為屬性,例如,name屬性:

      • 對應的讀方法是String getName()
      • 對應的寫方法是setName(String)

      只有getter的屬性稱為只讀屬性,只有setter的屬性稱為只寫屬性,很明顯,只讀屬性很常見,只寫屬性不常見。

       

      3、枚舉類(enum)

      3.1、枚舉類介紹

      枚舉類說明:

      • 枚舉類的對象是確定的,只有有限個。例如,如果把季節定義成類,那么這個類只有四個對象:春夏秋冬。此時就能把季節定義為一個枚舉類,這個枚舉類的對象是確定的并且只有有限個。
      • 當需要定義一組常量時,強烈建議使用枚舉類。
      • 如果枚舉類只有一個對象,則可以作為一種單例模式的實現方式。

      枚舉類的舉例:

      • 季節:春,夏,秋,冬
      • 線程的狀態:創建、就緒、運行、阻塞、死亡

      枚舉類中的每個枚舉都是單例模式,枚舉類中的實例對象是有限且固定的。

       

      3.2、定義枚舉類

      在JDK 5.0之前,需要我們自定義枚舉類。

      //自定義枚舉類
      class Season{
          //1.聲明Season對象的屬性:private final修飾
          private final String seasonName;
          private final String seasonDesc;
       
          //2.私有化類的構造器,并給對象屬性賦值
          private Season(String seasonName,String seasonDesc){
              this.seasonName = seasonName;
              this.seasonDesc = seasonDesc;
          }
       
          //3.提供當前枚舉類的多個對象:public static final修飾
          public static final Season SPRING = new Season("春天","春天來了");
          public static final Season SUMMER = new Season("夏天","夏天來了");
          public static final Season AUTUMN = new Season("秋天","秋天來了");
          public static final Season WINTER = new Season("冬天","冰天來了");
      }

       

      從JDK5.0 開始可以使用enum關鍵字來定義枚舉類,簡化書寫過程。

      package test;
      
      //使用enum關鍵字枚舉類
      public enum Season {
          //1.提供當前枚舉類的對象,多個對象之間用","隔開,末尾對象";"結束
          SPRING("春天","春天來了"),
          SUMMER("夏天","夏天來了"),
          AUTUMN("秋天","秋天來了"),
          WINTER("冬天","冰天來了");
      
          //2.聲明Season對象的屬性:private final修飾
          private final String seasonName;
          private final String seasonDesc;
      
          //3.私化類的構造器,并給對象屬性賦值
          private Season(String seasonName,String seasonDesc){
              this.seasonName = seasonName;
              this.seasonDesc = seasonDesc;
          }
      
          //4.其他需求:根據需要定義
          public String getSeasonName() {
              return seasonName;
          }
          public String getSeasonDesc() {
              return seasonDesc;
          }
      
          //其他訴求1:提供toString()
          @Override
          public String toString() {
              return "Season{" +
                      "seasonName='" + seasonName + '\'' +
                      ", seasonDesc='" + seasonDesc + '\'' +
                      '}';
          }
      }

       

      使用枚舉類時,通過 枚舉類名.常量名 來使用,此時得到的是枚舉類的實例對象,可以通過訪問該類的成員方法來獲取相應的數據。

      package test;
      
      public class Test02 {
          public static void main(String[] args) {
              Season spring = Season.SPRING;
              System.out.println(spring); //Season{seasonName='春天', seasonDesc='春暖花開'}
      
              String seasonStr = Season.SUMMER.getSeasonName();
              String seasonDesc = Season.SUMMER.getSeasonDesc();
      
              System.out.println(seasonStr + "  " + seasonDesc);  // 夏天  夏天來了
          }
      }

       

      3.3、枚舉類的特點

      通過enum定義的枚舉類,和其他的class沒有任何區別,enum定義的類型就是class
      • 使用enum關鍵字定義的枚舉類默認繼承了java.lang.Enum類,由于Java的單繼承性,不能再繼承其他類。
      • 必須要在第一行聲明枚舉類的對象,否則會報錯。
      • 從JDK5.0 開始Java的 switch語句可以把使用enum定義的枚舉類的對象作為表達式,并且case只能直接使用枚舉類對象名,不能加類名限定。如下:
      package test;
      
      public class Test02 {
          public static void main(String[] args) {
              Season sea = Season.SPRING;
              switch (sea){
                  case Season.SPRING://這里編譯會報錯,應該直接使用 SPRING
                      System.out.println(111);
                      break;
                  case SUMMER:
                      System.out.println(222);
                      break;
                  case AUTUMN:
                      break;
                  case WINTER:
                      break;
              }
          }
      }

       使用enum定義的枚舉類是一種引用類型,引用類型比較,要始終使用equals()方法,但enum類型可以例外。這是因為enum類型的每個常量在JVM中只有一個唯一實例,所以可以直接用==比較

       

      3.4、枚舉類的主要方法

      • values()方法:將枚舉類的所有對象以數組形式返回,利用此方法可以方便地遍歷枚舉類的值。
      • valueOf(String name)方法:返回枚舉類中對象名為name的對象。若沒有,則拋出IllegalArgumentException的異常。
      • toString()方法:返回枚舉類對象的名稱
      package test;
      
      public class Test02 {
          public static void main(String[] args) {
              Season summer = Season.SUMMER;
              //toString():返回枚舉類對象的名稱
              System.out.println(summer.toString());
      
              //values():返回所的枚舉類對象構成的數組
              Season[] values = Season.values();
              for(int i = 0;i < values.length;i++){
                  System.out.println(values[i]);
              }
      
              //valueOf(String objName):返回枚舉類中對象名是objName的對象。
              Season winter = Season.valueOf("WINTER");
              //如果沒objName的枚舉類對象,則拋異常:IllegalArgumentException
              Season winter1 = Season.valueOf("WINTER1");
              System.out.println(winter1);
          }
      }

      輸出結果如下:

       

      3.5、枚舉值的其他方法

      因為enum是一個class,每個枚舉的值都是class實例,因此,這些實例有一些方法,如下:

      name()方法 返回常量名

      String s = Weekday.SUN.name(); // "SUN"

       

      ordinal()返回定義的常量的順序,從0開始計數

      int n = Weekday.MON.ordinal(); // 1

      但是改變枚舉常量的順序就會導致ordinal()返回值發生變化。

       

      因為enum本身是class,所以我們可以定義private的構造方法,并且,給每個枚舉常量添加字段:

      public class Main {
          public static void main(String[] args) {
              Weekday day = Weekday.SUN;
              if (day.dayValue == 6 || day.dayValue == 0) {
                  System.out.println("Work at home!");   //輸出 Work at home!
              } else {
                  System.out.println("Work at office!");
              }
          }
      }
      
      enum Weekday {
          MON(1), TUE(2), WED(3), THU(4), FRI(5), SAT(6), SUN(0);
      
          public final int dayValue;
      
          private Weekday(int dayValue) {
              this.dayValue = dayValue;
          }
      }

      這樣就無需擔心順序的變化,新增枚舉常量時,也需要指定一個int值。

      給枚舉類添加的字段也可以是非final類型,即讓該字段可以在使用時被修改,但是不推薦這樣做!

       

      posted @ 2020-01-09 16:50  wenxuehai  閱讀(495)  評論(0)    收藏  舉報
      //右下角添加目錄
      主站蜘蛛池模板: 久久久久久国产精品美女| 亚洲国产精品午夜福利| 国产91丝袜在线观看| 国产永久免费高清在线| 毛片亚洲AV无码精品国产午夜 | 欧美大胆老熟妇乱子伦视频| 久9re热视频这里只有精品免费| 国产综合久久久久久鬼色| 亚洲AV无码久久精品日韩| 国产超碰无码最新上传| 久久精品网站免费观看 | 国产一级片内射在线视频| 一区二区亚洲精品国产精| 亚洲AV无码破坏版在线观看| 日本a在线播放| 美日韩精品综合一区二区| 亚洲成人av综合一区| 亚洲av永久无码精品天堂久久| 国产精品午夜福利片国产| 一卡2卡三卡4卡免费网站| 上栗县| 亚洲av色香蕉一二三区| 少妇xxxxx性开放| 77777亚洲午夜久久多人| 丰满熟妇人妻中文字幕| 亚洲大尺度无码专区尤物| 免费无码黄十八禁网站| 蜜臀av黑人亚洲精品| 国产精品亚洲片夜色在线| 国产色无码专区在线观看| 亚洲青青草视频在线播放| 成人激情视频一区二区三区| 日本精品极品视频在线| 国产一区精品综亚洲av| 蜜臀午夜一区二区在线播放| 亚洲人成网站在线播放2019| 日韩狼人精品在线观看| 一区二区三区四区国产综合| 精品国产欧美一区二区三区在线 | 人妻系列无码专区69影院| 国产亚洲精品岁国产精品|