신입개발자

연산자4 본문

프로그래밍 언어/자바

연산자4

dks_a 2022. 5. 1. 10:42
public class 연산자4 {

	public static void main(String[] args) {
		// 논리 연산자 : true/false 반환
		boolean t = true, f = false;
		System.out.println(t && f); //false , and -> &&
		System.out.println(t || f); //true , or -> ||
		System.out.println(!t); // false, not -> !
		System.out.println(t ^ f); // true, 비트 논리 연산자와 동일 XOR -> ^
		System.out.println(); 
		
		// 비트 논리 연산자와 비교 : 값을 반환
		System.out.println(7 & 3); //3
		System.out.println(7 | 3); //7
		System.out.println(~7); // -8
		System.out.println(7 ^ 3); // 4
		System.out.println(); 
		
		// 그런데 비트 논리 연산자도 boolean 형 비교 가능 : 결과는 논리 연산자와 동일 
		System.out.println(t & f); //false
		System.out.println(t | f); //true
		System.out.println(!t); // false
		System.out.println(t ^ f); // true
		System.out.println(); 
	
		// 논리 연산자 vs 비트 연산자
		// 논리 연산자는 short circuit 빠른 판단으로 실행됨 
		int i = 10;
		System.out.println(f && ++i > 20); // false , 숏서킷 적용, 우변 아예 실행 안함
		System.out.println("i = "+i); //10, i값 증가 안됨(전위/후위 여부 무관)
		System.out.println(t || ++i >10); // true
		System.out.println("i = "+i); //10
		System.out.println();
		;
		// 비트연산자는 좌변, 우변 모두 수행하는 대신 속도 느림
		i =10;
		System.out.println(f & ++i > 20); // false 
		System.out.println("i = "+i); //11
		System.out.println(t | ++i >10); // true
		System.out.println("i = "+i); //12
		System.out.println(t ^ ++i >10); // false, XOR은 구조상 어차피 숏서킷 적용안함, 우변 실행됨
		System.out.println("i = "+i); //13
		System.out.println();
	}

}

'프로그래밍 언어 > 자바' 카테고리의 다른 글

단순if  (0) 2022.05.01
연산자5  (0) 2022.05.01
연산자3  (0) 2022.05.01
연산자2  (0) 2022.05.01
연산자1  (0) 2022.01.07
Comments