티스토리 뷰

Language/Java

[Java]Flag이용하기.

out of coding 2014. 9. 19. 11:23

Flag를 사용하여서, 값을 한꺼번에 합쳐서 보낼수도 있고, 조작하여서 사용할 경우가 존재하게 된다.


비트 연산에 대한 생각을 하게 되면 쉽게 해결이 되지만. 막상 또 하려고 하면 정리가 안된다.


그래서 정리를 하여둠.


public class FlagTest {

	private static final int NONE = 0;
	private static final int ONE = 1;
	private static final int TWO = ONE << 1;
	private static final int THREE = ONE << 2;
	private static final int ALL = ONE | TWO | THREE;
	
	public static void main(String[] args) {

		System.out.println("NONE = " + NONE);
		System.out.println("ONE = " + ONE);
		System.out.println("TWO = " + TWO);
		System.out.println("THREE = " + THREE);
		
		// Flag의 합침값
		int flags = ONE | THREE;
		System.out.println("ONE | THREE = " + flags);
		
		// 특정 Flag 값을 확인
		System.out.println("THREE = " + ((flags & THREE) != 0));
		
		// 특정 Flag값을 추가
		System.out.println("TWO = " + ((flags & TWO) != 0));
		flags |= TWO;
		System.out.println("TWO = " + ((flags & TWO) != 0));
		
		// 특정 Flag값을 제거
		flags &= ~THREE;
		System.out.println("THREE = " + ((flags & THREE) != 0));
		
		// 특정 Flag값을 반전 (제거랑 비슷함)
		flags ^= TWO;
		System.out.println("TWO = " + ((flags & TWO) != 0));
		
		// Flag 모두 제거
		flags = NONE; // 1번방법
		System.out.println("flags = " + flags);
		flags |= TWO;
		System.out.println("flags = " + flags);
		flags &= ~flags; // 2번방법
		System.out.println("flags = " + flags);
		
		// 모든 플래그 적용
		flags = ALL;
		System.out.println("ONE = " + ((flags & ONE) != 0));
		System.out.println("TWO = " + ((flags & TWO) != 0));
		System.out.println("THREE = " + ((flags & THREE) != 0));
		
		// 몇개빼고 적용
		flags = ALL ^ ONE;
		System.out.println("ONE = " + ((flags & ONE) != 0));
		System.out.println("TWO = " + ((flags & TWO) != 0));
		System.out.println("THREE = " + ((flags & THREE) != 0));
	}
}

'Language > Java' 카테고리의 다른 글

[Java]정규표현식  (0) 2015.01.06
[Java]Deep copy, Shallow copy  (0) 2014.09.26
Java의 접근 제한자  (0) 2014.08.13
System.currentTimeMillis()와 System.nanoTime()  (0) 2014.03.10
raplace와 replaceAll의 차이  (0) 2014.03.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함