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)); } }