쌍용교육(JAVA)/JAVA

쌍용교육 -JAVA 수업 12일차 enum

구 승 2024. 4. 11. 17:32
package kr.s24.object.enumtest;

public class EnumMain01 {
	//문자열 상수
	public static final String JAVA = "JAVA";
	public static final String XML ="XML";
	public static final String JSP = "JSP";
	
	
	public static void main(String[] args) {
		//문자열 상수 호출 (static 이기 때문에 객체생성 없이 호출) -> (원래는 EnumMain01.JAVA 이런식으로 호출함.)
		System.err.println(JAVA);
		System.out.println(XML);
		System.out.println(JSP);
	}
}
JAVA
XML
JSP

package kr.s24.object.enumtest;

//열거형 객체
enum Lesson {
	//열거형 상수
	//문자열 상수
	JAVA,XML,JSP //상수들을 그룹으로 묶어서 객체로 생성.
}

public class EnumMain02 {
	public static void main(String[] args) {
		//toString,name등을 쓰지않아도 됨
		System.out.println(Lesson.JAVA);
		System.out.println(Lesson.XML);
		System.out.println(Lesson.JSP);
		System.out.println("-------------------");
		//객체로 생성되기 때문에 부모클래스인 Object의 tostring메서드 호출 가능.
		System.out.println(Lesson.JAVA.toString());
		System.out.println(Lesson.XML.toString());
		System.out.println(Lesson.JSP.toString());
		System.out.println("-------------------");
		//열거 객체의 문자열을 반환 name() 역시 내장되어있는 메서드
		System.out.println(Lesson.JAVA.name());
		System.out.println(Lesson.XML.name());
		System.out.println(Lesson.JSP.name());
		System.out.println("-------------------");
		
		//열거 객체의 순번(0부터 시작)을 반환
		System.out.println(Lesson.JAVA.ordinal()); //.ordinal() ->    순번을 가져옴
		System.out.println(Lesson.XML.ordinal());
		System.out.println(Lesson.JSP.ordinal());
	}
}
JAVA
XML
JSP
-------------------
JAVA
XML
JSP
-------------------
JAVA
XML
JSP
-------------------
0
1
2

package kr.s24.object.enumtest;

enum Gender {
	MALE,FEMAIL; //메서드가 없는 경우는 세미콜론 생략이 가능하지만 메서드를 쓸 경우에는 세미콜론을 사용해야됨.
	
	//메소드 재정의
	@Override
	public String toString() {
		switch(this) { //객체 자신을 참조하는 this 사용
		case MALE:
			return "남자";
		default :
			return "여자";
		}
	}
}
public class EnumMain03 {
	public static void main(String[] args) {
		System.out.println(Gender.MALE); //위에 메서드에서 toString()을 사용했기 때문에 안써도 출력가능. 
		System.out.println(Gender.FEMAIL);
		System.out.println("--------------");
		System.out.println(Gender.MALE.toString());
		System.out.println(Gender.FEMAIL.toString());
	}
}
남자
여자
--------------
남자
여자

package kr.s24.object.enumtest;

enum Item{
	ADD,DEL,SEARCH,CANCEL
}
public class EnumMain04 {
	public static void main(String[] args) {
		//values()메서드는 열거 타입의 모든 열거 객체들을 배열로 만들어 반환
		Item[] items = Item.values();
		//반복문을 이용한 열거 타입 상수 호출
		for(Item n : items) {
			System.out.println(n + " : " + n.ordinal());
		}
	}
}
ADD : 0
DEL : 1
SEARCH : 2
CANCEL : 3

package kr.s24.object.enumtest;

enum Item2 {
	ADD(5),DEL(11),SEARCH(2),CANCEL(22); //괄호안에 숫자는 생성자를 말한다.
	
	//위에 지정한 상수 값들을 저장하기 위한 공간
	private final int var;
	
	//생성자
	Item2(int var) {//숫자형태의 상수를 사용싶을 때 int 사용
		this.var = var;
	}
	//캡슐화(?)
	public int getVar() {
		return var;
	}
}
public class EnumMain05 {
	public static void main(String[] args) {
		System.out.println(Item2.ADD);
		System.out.println(Item2.DEL);
		System.out.println(Item2.SEARCH);
		System.out.println(Item2.CANCEL);
		System.out.println("--------------------");
		System.out.println(Item2.ADD.getVar());
		System.out.println(Item2.DEL.getVar());
		System.out.println(Item2.SEARCH.getVar());
		System.out.println(Item2.CANCEL.getVar());
	}
}
ADD
DEL
SEARCH
CANCEL
--------------------
5
11
2
22