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

淺析Java編程中枚舉類型的定義與使用

 更新時(shí)間:2016年05月03日 08:57:30   作者:LZGS_4  
這篇文章主要介紹了Java編程中枚舉類型的定義與使用,簡(jiǎn)單講解了enum關(guān)鍵字與枚舉類的用法,需要的朋友可以參考下

定義枚舉類型時(shí)本質(zhì)上就是在定義一個(gè)類,只不過很多細(xì)節(jié)由編譯器幫您補(bǔ)齊了,所以某些程度上,enum關(guān)鍵字的 作用就像是class或interface。

當(dāng)您使用"enum"定義枚舉類型時(shí),實(shí)質(zhì)上您定義出來的類型繼承自 java.lang.Enum 類,而每個(gè)枚舉的成員其實(shí)就是您定義的枚舉類型的一個(gè)實(shí)例(Instance),它們都被默認(rèn)為 final,所以您無法改變它們,它們也是 static 成員,所以您可以透過類型名稱直接使用它們,當(dāng)然最重要的,它們都 是公開的(public)。

舉個(gè)例子:

OpConstants.java
public enum OpConstants {TURN_LEFT, TURN_RIGHT, SHOOT} 

在這個(gè)例子中,OpConstants繼承自 java.lang.Enum,每個(gè)枚舉成員如TURN_LEFT、TURN_RIGHT、SHOOT,它們都是OpConstants的一個(gè)對(duì)象實(shí)例, 即是 對(duì)象實(shí)例,上面自然有一些方法可以采用,例如toString()方法被覆蓋了,可以讓您直接取得枚舉值的字符串描述,而枚舉對(duì)象定義的values ()方法可以讓您取得所有的枚舉實(shí)例,并以數(shù)組方式傳回,您使用這兩個(gè)方法來簡(jiǎn)單的將OpConstants的內(nèi)容顯示出來:

ShowEnum.java
public class ShowEnum {
  public static void main(String[] args) {
    for(OpConstants constant: OpConstants.values()) {
      System.out.println(constant.toString());
    }
  }
} 

基本上println()會(huì)自動(dòng)調(diào)用toString(),所以不寫toString()其實(shí)也是可以的,執(zhí)行結(jié)果如下:

TURN_LEFT
TURN_RIGHT
SHOOT

您可以使用 "==" 或是 equals() 方法來比較枚舉對(duì)象,""==""會(huì)比較您提供的枚舉對(duì)象是不是同一個(gè)(也就是占據(jù)同一個(gè)內(nèi)存位置),而equals()則是實(shí)質(zhì)的比較兩個(gè)枚舉對(duì)象的內(nèi)容,默認(rèn)會(huì)根據(jù)枚舉的字符串值來比較。

valueOf()方法可以讓您將指定的字符串嘗試轉(zhuǎn)換為枚舉實(shí)例,您可以使用compareTo()方法,這可以比較兩個(gè)枚舉對(duì)象在枚舉時(shí)的順序,下面舉個(gè)例子

ShowEnum.java
public class ShowEnum {
  public static void main(String[] args) {
    enumCompareTo(OpConstants.valueOf(args[0]));
  }
 
  public static void enumCompareTo(OpConstants constant) {
    System.out.println(constant);
    for(OpConstants c: OpConstants.values()) {
      System.out.println(constant.compareTo(c));
    }
  }
} 

執(zhí)行結(jié)果:

$java ShowEnum TURN_RIGHT
TURN_RIGHT
1
0
-1

傳回正值,表示順序在被比較的枚舉對(duì)象之前,負(fù)值表示之后,而0則表示兩個(gè)互比枚舉值的位置是相同的。

對(duì)于每一個(gè)枚舉成員,我們可以使用ordinal()方法,依枚舉順序得到位置索引,默認(rèn)以 0 開始,例如:

ShowEnum.java
public class ShowEnum {
  public static void main(String[] args) {
    for(OpConstants c : OpConstants.values()) {
      System.out.printf("%d %s%n", c.ordinal(), c);
    }
  }
} 

執(zhí)行結(jié)果:

0 TURN_LEFT
1 TURN_RIGHT
2 SHOOT

enum關(guān)鍵字可用于定義一個(gè)枚舉類,可以把相關(guān)常量寫在一個(gè)類里,下面我們?cè)賮砜磦€(gè)例子。

如下代碼:       

class TestClass {

  private TestClass(){}//定義私有構(gòu)造函數(shù),不能從外部實(shí)例化對(duì)象

  //提供兩個(gè)實(shí)例A、B

  public static final TestClass A=new TestClass();

  public static final TestClass B=new TestClass();

}

可以用枚舉類型代替:

enum TestClass01{

  A,B;

}

用法:

一個(gè)枚舉也可以有構(gòu)造函數(shù)、字段和方法:

enum TestClass02{

  A("a") //建立對(duì)象時(shí)傳入構(gòu)造函數(shù)參數(shù)

  ,B("b");

  private String value;

  private TestClass02(String value){

    this.value=value;

  }

  public String getValue(){

    return this.value;

  }

}

枚舉也可以有抽象方法:

enum TestClass03{

  A(){

  //實(shí)現(xiàn)抽象方法

  public void type(){

    System.out.println("優(yōu)");

  }

  }

  ,B(){

  public void type(){

    System.out.println("良");

  }

  };

  public abstract void type();//定義抽象方法

}

測(cè)試方法:

public class Test02 {

  public static void main(String[] args){

    print(TestClass02.A);//傳入枚舉參數(shù)

  }

  public static void print(TestClass02 t){

    System.out.println(t.getValue());

  }

enum TestClass02{

  A("a")

  ,B("b");

  private String value;

  private TestClass02(String value){

    this.value=value;

  }

  public String getValue(){

    return this.value;

  }

}

}

運(yùn)行結(jié)果:

a

Author:事始
Sign:只要你還在嘗試,就不算失敗。

相關(guān)文章

  • Java Swing JTextField文本框的代碼示例

    Java Swing JTextField文本框的代碼示例

    這篇文章主要介紹了Java Swing JTextField文本框的代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 淺入淺出的講解Spring循環(huán)依賴問題

    淺入淺出的講解Spring循環(huán)依賴問題

    循環(huán)依賴其實(shí)就是循環(huán)引用,也就是兩個(gè)或則兩個(gè)以上的bean互相持有對(duì)方,最終形成閉環(huán),下面這篇文章主要給大家介紹了關(guān)于Spring循環(huán)依賴問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-10-10
  • 詳解JAVA 設(shè)計(jì)模式之狀態(tài)模式

    詳解JAVA 設(shè)計(jì)模式之狀態(tài)模式

    這篇文章主要介紹了JAVA 狀態(tài)模式的的相關(guān)資料,文中講解的非常細(xì)致,幫助大家更好的學(xué)習(xí)理解JAVA 設(shè)計(jì)模式,感興趣的朋友可以了解下
    2020-06-06
  • 利用Spring?Boot和JPA創(chuàng)建GraphQL?API

    利用Spring?Boot和JPA創(chuàng)建GraphQL?API

    這篇文章主要介紹了利用Spring?Boot和JPA創(chuàng)建GraphQL?API,GraphQL既是API查詢語言,也是使用當(dāng)前數(shù)據(jù)執(zhí)行這些查詢的運(yùn)行時(shí),下文更多相關(guān)內(nèi)容介紹需要的小伙伴可以參考一下
    2022-04-04
  • SpringAop源碼及調(diào)用過程概述

    SpringAop源碼及調(diào)用過程概述

    這篇文章主要介紹了SpringAop源碼及調(diào)用過程概述,Spring AOP(面向切面編程)是Spring框架的一個(gè)重要特性,它提供了一種在程序運(yùn)行期間動(dòng)態(tài)地將額外的行為織入到代碼中的方式,需要的朋友可以參考下
    2023-10-10
  • Java中StringBuilder類的介紹與常用方法

    Java中StringBuilder類的介紹與常用方法

    StringBuilder是一個(gè)可變的字符串的操作類,我們可以把它看成是一個(gè)對(duì)象容器,下面這篇文章主要給大家介紹了關(guān)于Java中StringBuilder類的介紹與常用方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Java并發(fā)之CAS原理詳解

    Java并發(fā)之CAS原理詳解

    這篇文章主要為大家詳細(xì)介紹了Java的CAS原理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java上傳下載文件并實(shí)現(xiàn)加密解密

    Java上傳下載文件并實(shí)現(xiàn)加密解密

    這篇文章主要介紹了Java上傳下載文件并實(shí)現(xiàn)加密解密,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Spring計(jì)時(shí)器stopwatch使用詳解

    Spring計(jì)時(shí)器stopwatch使用詳解

    這篇文章主要介紹了Spring計(jì)時(shí)器stopwatch使用詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java編寫計(jì)算器的常見方法實(shí)例總結(jié)

    Java編寫計(jì)算器的常見方法實(shí)例總結(jié)

    這篇文章主要介紹了Java編寫計(jì)算器的常見方法,結(jié)合實(shí)例形式總結(jié)分析了Java實(shí)現(xiàn)計(jì)算器功能的常用方法,需要的朋友可以參考下
    2016-04-04

最新評(píng)論

江口县| 古丈县| 壶关县| 江城| 会理县| 武汉市| 深水埗区| 射洪县| 二连浩特市| 泸西县| 肇庆市| 武山县| 高碑店市| 东明县| 徐闻县| 宝鸡市| 镇原县| 施甸县| 福贡县| 渭南市| 丹寨县| 正宁县| 济源市| 万宁市| 涟源市| 桃源县| 海丰县| 武城县| 赣州市| 抚顺县| 曲阳县| 望都县| 黄梅县| 民权县| 孙吴县| 兴安盟| 无极县| 轮台县| 治多县| 云南省| 迁西县|