国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
枚舉類型的聲明及應(yīng)用

枚舉類型的定義和枚舉變量的說明

  1. 枚舉的定義枚舉類型定義的一般形式為:
  enum 枚舉名{ 枚舉值表 };
  在枚舉值表中應(yīng)羅列出所有可用值。這些值也稱為枚舉元素。
  例如:
  該枚舉名為weekday,枚舉值共有7個,即一周中的七天。凡被說明為weekday類型變量的取值只能是七天中的某一天。
  2. 枚舉變量的說明
  如同結(jié)構(gòu)和聯(lián)合一樣,枚舉變量也可用不同的方式說明,即先定義后說明,同時定義說明或直接說明。
  設(shè)有變量a,b,c被說明為上述的weekday,可采用下述任一種方式:
  enum weekday{ sun,mon,tue,wed,thu,fri,sat };
  enum weekday a,b,c;
  或者為:
  enum weekday{ sun,mon,tue,wed,thu,fri,sat }a,b,c;
  或者為:
  enum { sun,mon,tue,wed,thu,fri,sat }a,b,c;

枚舉類型變量的賦值和使用

  枚舉類型在使用中有以下規(guī)定:
  1. 枚舉值是常量,不是變量。不能在程序中用賦值語句再對它賦值。
  例如對枚舉weekday的元素再作以下賦值:
  sun=5;
  mon=2;
  sun=mon;
  都是錯誤的。
  2. 枚舉元素本身由系統(tǒng)定義了一個表示序號的數(shù)值,從0開始順序定義為0,1,2…。如在weekday中,sun值為0,mon值為1,…,sat值為6。
  【例11.10】
  main(){
  enum weekday
  { sun,mon,tue,wed,thu,fri,sat } a,b,c;
  a=sun;
  b=mon;
  c=tue;
  printf("%d,%d,%d",a,b,c);
  }
  說明:
  只能把枚舉值賦予枚舉變量,不能把元素的數(shù)值直接賦予枚舉變量。如:
  a=sun;
  b=mon;
  是正確的。而:
  a=0;
  b=1;
  是錯誤的。如一定要把數(shù)值賦予枚舉變量,則必須用強制類型轉(zhuǎn)換。
  如:
  a=(enum weekday)2;
  其意義是將順序號為2的枚舉元素賦予枚舉變量a,相當(dāng)于:
  a=tue;
  還應(yīng)該說明的是枚舉元素不是字符常量也不是字符串常量,使用時不要加單、雙引號。
  【例11.11】
  #include <stdio.h>
  int main(){
  enum body
  { a,b,c,d } month[31],j;
  int i1;
  j=a;
  for(i1=1;i1<=30;i1++){
  month[i1]=j;
  j++;
  if (j>d) j=a;
  }
  for(i1=1;i1<=30;i1++){
  switch(month)
  {
  case a:printf(" %2d %c\t",i1,'a'); break;
  case b:printf(" %2d %c\t",i1,'b'); break;
  case c:printf(" %2d %c\t",i1,'c'); break;
  case d:printf(" %2d %c\t",i1,'d'); break;
  default:break;
  }
  }
  printf("\n");
  }

Enum的用法

  Enum是enumeration(列舉)的簡寫形式,包含在java.lang包中.熟悉C, C++, C#, 或 Pascal人應(yīng)該對列舉有所了解,先看個例子: public enum Season { winter, spring, summer, fall }
  一個enum是定義一組值的對象,它可以包括零個或多個值成員.它是屬于enum類型的,一個enum對象中不可有兩個或多個相同的屬性或值.在次之前的java程序員一般是 用接口的方法實現(xiàn)列舉的,如 :
  public interface Season {
  static winter = 0;
  static spring = 1; //etc..
  }
  引入了enum的java的列舉的編寫方便了許多,只須定義一個enum型的對象.enum對象的值都回自動獲得一個數(shù)字值,從0開始,依次遞增.看一個比較簡單的enum實現(xiàn)的例子:
  EnumDemo.java
  package net.javagarage.enums;
  /*
  We can loop over the values we put into the enum
  using the values() method.
  Note that the enum Seasons is compiled into a
  separate unit, called EnumDemo$Seasons.class
  */
  public class EnumDemo {
  /*declare the enum and add values to it. note that, like in C#, we don't use a ; to
  end this statement and we use commas to separate the values */
  private enum Seasons { winter, spring,
  summer, fall }
  //list the values
  public static void main(String[] args) {
  for (Seasons s : Seasons.values()){
  System.out.println(s);
  }
  }
  }
  運行上述代碼你回得到 以下結(jié)果:
  winter
  spring
  summer
  fall
  Enum的屬性調(diào)用:
  下面的代碼展示了調(diào)用enum對象的方法,這也是它通常的用法:
  package net.javagarage.enums;
  /*
  File: EnumSwitch.java
  Purpose: show how to switch against the values in an enum.
  */
  public class EnumSwitch {
  private enum Color { red, blue, green }
  //list the values
  public static void main(String[] args) {
  //refer to the qualified value
  doIt(Color.red);
  }
  /*note that you switch against the UNQUALIFIED name. that is, "case Color.red:" is a
  compiler error */
  private static void doIt(Color c){
  switch (c) {
  case red:
  System.out.println("value is " + Color.red);
  break;
  case green:
  System.out.println("value is " + Color.green);
  break;
  case blue:
  System.out.println("value is : " + Color.blue);
  break;
  default :
  System.out.println("default");
  }
  }
  }
  為enums添加屬性和方法
  enums也可以象一般的類一樣添加方法和屬性,你可以為它添加靜態(tài)和非靜態(tài)的屬性或方法,這一切都象你在一般的類中做的那樣.
  package net.javagarage.enums;
  /*
  File: EnumDemo.java
  Purpose: show how to use an enum that also defines its own fields and methods
  */
  public class EnumWithMethods {
  //declare the enum and add values to it.
  public enum Season {
  winter, spring, summer, fall;
  private final static String location = "Phoenix";
  public static Season getBest(){
  if (location.equals("Phoenix"))
  return winter;
  else
  return summer;
  }
  public static void main(String[] args) {
  System.out.println(Season.getBest());
  }
  }
  就是這么的簡單.但是有一點是需要注意的,那就是enums的值列表必須緊跟在enum聲明,不然編譯時將會出錯.
  Enums構(gòu)造函數(shù):
  和類一樣enums也可以有自己的構(gòu)造函數(shù),如下:
  package net.javagarage.enums;
  public class EnumConstructor {
  public static void main(String[] a) {
  //call our enum using the values method
  for (Temp t : Temp.values())
  System.out.println(t + " is : " + t.getValue());
  }
  //make the enum
  public enum Temp {
  absoluteZero(-459), freezing(32),
  boiling(212), paperBurns(451);
  //constructor here
  Temp(int value) {
  this.value = value;
  }
  //regular field?but make it final,
  //since that is the point, to make constants
  private final int value;
  //regular get method
  public int getValue() {
  return value;
  }
  }
  }
  輸出結(jié)果是:
  absoluteZero is : -459
  freezing is : 32
  boiling is : 212
  paperBurns is : 451
  盡管enums有這么多的屬性,但并不是用的越多越好,如果那樣還不如直接用類來的直接.enums的優(yōu)勢在定義int最終變量僅當(dāng)這些值有一定特殊含義時.但是如果你需要的是一個類,就定義一個類,而不是enum.
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C 實現(xiàn)反射機制
Java中的Enum用法介紹
Java枚舉(enum)詳解:Java聲明枚舉類型、枚舉(enum)類、EnumMap 與 EnumSet
說說Java中的枚舉(一)
Java學(xué)習(xí)_Java核心類
JDK5.0的11個主要新特征
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服