java-열거형

ezzange·2022년 8월 25일
0

java

목록 보기
10/16
post-thumbnail

열거형 (Enum)

-프로그램에서 사용되는 정적인 값을 정적으로 나열시켜 사용하는 방식으로 클래스와 비슷한 형식이다.

1,2,3,4
MON, TUEN, WED,...
열거형 타입 변수이름;
데이터 표현 : 열거타입.상수
컴파일시 java.lang.Enum을 상속처리해서 컴파일이 이루어진다.

접근제한자 / 지정예약어 / enum / 열거형이름 (정적변수들)

public / / enum / Season (spring, summer, autumn, winter)
// class

enum 를 사용할 열거형이름의 클래스를 만들어주어 내가 원하는 값을 설정하고

public enum Season {
    spring, summer, autumn, winter

//내가 원하는 값을 정해두고 싶을때
// spring, summer, autumn, winter 인 정적변수 자체가 값이 되는 것이다.
}

다른 클래스를 만들어 아래의 코드를 실행해본다면

public class Enumtest {
	public static void main(String[] args) {
		
		Season lastSeason = Season.winter;
		Season nowSeason = Season.summer;
		Season nextSeason = Season.autumn;
		
		System.out.println("last = " + lastSeason);
		System.out.println("now = " + nowSeason);
		System.out.println("next = " + nextSeason);
	}
}

기대값은 아래와 같다.

last = winter
now = summer
next = autumn

한글 표현식

또한 MON("월") 이런식으로 한글표현식이 가능하다.

 package enums;

 public enum Week {
     //열거상수
     MON("월"),//0
     TUE("화"),//1
     WED("수"),//2
     THU("목"),//3
     FRI("금"),//4
     SAT("토"),//5
     SUN("일");//6
     //관례적으로 열거형 상수의 표현은 대문자로 사용
     public String dow;
     Week(String dow){
         this.dow=dow;
     }
 }


package enums;


import java.time.LocalDateTime;
import java.util.Calendar;
import java.util.Date;

public class EnumTest01 {
    public static void main(String[] args) {
        //객체타입//객체 변수의 디폴트값--> null
        //Week week=null;
        Week week=Week.MON;//열거형 타입으로 변수선언
        int no=1;

        System.out.println(week);
        //표현식을 기본적으로2가지표현이 가능
        //문자표현식
        System.out.println(week.name());
        //숫자표현식 --> ordinal은 나열된순서에 맞는 데이터값을 표기해줌
        System.out.println(week.ordinal());
        for(Week w : Week.values()) {
            System.out.println(w);
        }
        Date date=new Date();
        System.out.println(date);

        ////1.8버전 Calender cal=new Calendar();
        Calendar cal = Calendar.getInstance();
        System.out.println(cal);
        //GregorianCalendar gc=new Gregoriancalendar;
        LocalDateTime dateTime;
        //Enum.class

        int wk=cal.get(Calendar.DAY_OF_WEEK);
        System.out.println(wk);//일:1 월:2 화:3 ~~

        switch(wk) {
        case 1:week= Week.SUN; break;
        case 2:week= Week.MON; break;
        case 3:week= Week.TUE; break;
        case 4:week= Week.WED; break;
        case 5:week= Week.THU; break;
        case 6:week= Week.FRI; break;
        case 7:week= Week.SAT; break;
        }		
        System.out.println("오늘의 요일은 "+ week.dow+"요일입니다람쥐");
    }//main

}//class

기대값으로는 아래와 같이 나온다.

        MON
        MON
        0
        MON
        TUE
        WED
        THU
        FRI
        SAT
        SUN
        Mon Aug 29 15:34:20 KST 2022
        java.util.GregorianCalendar[time=1661754860957,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=30,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=7,WEEK_OF_YEAR=36,WEEK_OF_MONTH=5,DAY_OF_MONTH=29,DAY_OF_YEAR=241,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=34,SECOND=20,MILLISECOND=957,ZONE_OFFSET=32400000,DST_OFFSET=0]
        2
        오늘의 요일은 월요일입니다람쥐

배열 응용

    package classes;

    public class Exam {

            String name;
            int kor;
            int eng;
            int mat;
            int tot;
            double avg;
            void calcTotAndAvg() {
                tot=kor+eng+mat;
                avg=tot*3.0;
            }
            //출력메서드
            void print() {
                System.out.println("-- 회원정보 --");
                System.out.println("이름 : "+name);
                System.out.println("국어 : "+kor);
                System.out.println("영어 : "+eng);
                System.out.println("수학 : "+mat);
                System.out.println("총점 : "+tot);
                System.out.println("평균 : "+avg);
                System.out.println("------------------");
            }



    }//class
    package classes;

    public class ArrayText01 {
        public static void main(String[] args) {

            String name;//이름 문자열
            int[] exam =new int[3+1];//국.영.수 + 총점
            double avg; //총점(실수)은 더블형

            name="나그린";
            exam[0]=100;
            exam[1]=90;
            exam[2]=80;
            exam[3]=exam[0]+exam[1]+exam[2];
            avg=exam[3]/3.0;

            Exam ex =new Exam();
            ex.name= "나그린";
            ex.kor=100;
            ex.eng=90;
            ex.mat=80;
            ex.tot = ex.kor + ex.eng + ex.mat;
            ex.avg = ex.tot / 3.0;

            System.out.println("이름 : "+ex.name);
            System.out.println("국어 : "+ex.kor);
            System.out.println("영어 : "+ex.eng);
            System.out.println("수학 : "+ex.mat);
            System.out.println("총점 : "+ex.tot);
            System.out.println("평균 : "+ex.avg);
            System.out.println();

            ex.print();
            ex.eng=100;
            ex.calcTotAndAvg();
            ex.print();


        }//main
    }//class

기대값

이름 : 나그린
국어 : 100
영어 : 90
수학 : 80
총점 : 270
평균 : 90.0

-- 회원정보 --
이름 : 나그린
국어 : 100
영어 : 90
수학 : 80
총점 : 270
평균 : 90.0
------------------
-- 회원정보 --
이름 : 나그린
국어 : 100
영어 : 100
수학 : 80
총점 : 280
평균 : 840.0
------------------

0개의 댓글