SSISO Community

시소당

자바/Java] 열거형 상수 정의, enum 타입 - Enumeration

열거형  상수  (enum  타입)  정의  예제

파일명:  Foo.java
public  class  Foo  {
    enum  Week  {  월,  화,  수,  목,  금,  토,  일  }        //  끝에  세미콜론(;)을  붙이지  않음
    enum  RGB  {  red,  green,  blue  }

    public  static  void  main(String  args  [])  {

        //  Week  이라는  새로운  자료형으로  Day  라는  변수를  만들어,  "금"을  대입.
        Week  Day  =  Week.금;
        System.out.println(Day  +  "요일");    //  출력  결과:  금요일
        System.out.println(RGB.blue);            //  출력  결과:  blue

        System.out.println(Week.토);              //  출력  결과:  토

        Day  =  Week.일;
        System.out.println(Day);                      //  출력  결과:  일

    }
}

열거형  상수  즉  Enumeration  이란,  미리  정해진  일정한  값을  가진  새로운  자료형을  사용자가  직접  만드는  것입니다.

문자열로  정의되어  있지만  내부적으로는  정수로  취급되기에,  일반  배열로  처리할  때보다  속도가  빠릅니다.

가령  일주일은  7개의  요일만  있고,  빛의  삼원색  (RGB)  은  3가지의  색으로만  이루어져  있기에,  이런  데이터를  다룰  때에는  열거형  상수로  정의하여  사용하면  이상적입니다.


상수이기에
Week.토  =  Week.일;
이런  대입은  안됩니다.  그러면  Foo.java:12:  cannot  assign  a  value  to  final  variable  토  이런  에러가  납니다.


enum  은  반드시  메소드  외부에서  정의해야  합니다.  그렇지  않으면  Foo.java:5:  enum  types  must  not  be  local  이런  에러가  납니다.


자바  버전  5.0  (=1.5)  이상에서만  Enumeration  이  지원됩니다.


루프문에서  enum  타입의  요소에  쉽게  접근하는  방법이  여기에  있습니다:

인덱스를  사용하여  직접  억세스하지  않고,  배열  요소의  개수에  딱  맞게  루프를  돌리는  작업을  하는  것입니다.  그래서  배열  요소의  개수를  몰라도  간단히  for루프를  돌릴  수  있습니다.

배열뿐  아니라  enum  타입에도  적용이  됩니다.  그렇지만  foreach  라는  예약어가  있는  것은  아니고,  for문의  구조를  약간  변형하여  사용합니다.

for문(for  each문)  예제

파일명:  Foo.java
public  class  Foo  {
    enum  Week  {  월,  화,  수,  목,  금,  토,  일  }

    public  static  void  main(String  args  [])  {

        //  enum  타입을  foreach  로  출력
        for  (Week  day  :  Week.values())  {  //  Week.values()에는  Week  의  값들이  교대로  들어갑니다.
            System.out.println(day  +  "요일");
        }


        //  정수  배열을  foreach  로  출력
        int[]  num  =  {  14,  54,  52,  26,  62,  55  };
        for  (int  i  :  num)
            System.out.println(i);


        //  문자열  배열을  foreach  로  출력
        String  names[]  =  {  "맹구",  "배용준",  "땡칠이",  "장동건",  "강수정",  "송창식",  "황당해",  "고은아"  };
        for  (String  s  :  names)
            System.out.println(s);


    }
}

1687 view

4.0 stars