2014년 9월 4일 목요일

Java 연산자(논리연산자)

5. 논리 연산자

5.1 논리 연산자 &&, ll

논리 연산자는 피연산자로 boolean형 또는 boolean형 값을 결과로 하는 조건식만을 허용한다. 조건문과 반복문에서 조건식 간의 결합에 사용합니다.
 그리고 &&가 ll연산보다 우선순위가 높으므로 한 조건식에 &&와 ll가 함께 사용할 떄는 관호를 사용해서 우선순위를 명확하게 해주도록 합니다.

ll(or 결합) - 피연산자 중 어느 한 쪽만 true이면 true를 결과로 얻습니다.
&&(and 결합) - 피연산자 양쪽 모두 true이어야 true를 결과로 얻습니다.

논리 연산자의 또 다른 특징은 효율적인 연산을 한다는 것입니다. or연산 ll의 경우, 두 개의 피연산자 중 어느 한 쪽만 true가 되어도 전체 연산결과가 true가 되므로 좌측의 피연산자가 true면, 우측의 피연사자의 값은 검사하지 않습니다. and연산 &&의 경우도 마찬가지로 어느 한쪽만 false이어도 전체 연산결과가 false이므로 좌측의 피연사자가 false면, 우측의 피연산자의 값은 검사하지 않습니다.
즉 같은 조건식이라도 피연산자의 위치에 따라서 연산속도가 달라질 수 있습니다.

public class Operator23 {

public static void main(String[] args) {

char x = 'e';

if((x>='a' && x<='z') || x>='a' &&  x<='z')
System.out.println("유효한 문자입니다.");
else
System.out.println("유요하지 않은 문자입니다.");


}


}

실행결과

유요하지 않은 문자입니다.

&&와 ||를 조합하여 e가 유요한 영문자인지를 검사하는 조건식을 만들었습니다. 문자형 변수 x에 저장된 문자가 'e'이므로 or연산자의 좌측 피연산자인 조건식(x>='a'&&x<='z')의 결과가 true이기 때문에 나머지 우측 연산자를 검사하지 않고 전체 조건식을 true로 판단합니다.

5.2 비트 연산자 & | ^


비트 연산자는 이진 비트연산을 수행합니다. 값을 이진수로 표현했을 때의 각 자리수의 규칙에 따라 연산을 수행합니다. 실수형인 float와 doulble을 제외한 모든 기본형에서 사용가능합니다.

| (or연산자) : 피연산자 중 한쪽 값이 1이면, 1을 결과로 얻고, 그 외에는 0을 얻습니다.
&(and연산자) : 피연산자 양 쪽이 모두 1이어야 1을 결과로 얻고, 그 외에는 0을 얻습니다.
^(xor연산자) : 피연산자의 값이 서로 다를 때만 1을 결과로 얻고, 그 외에는 0을 얻습니다.


public class Operator23 {

public static void main(String[] args) {
int x = 3;
int y = 7;
System.out.println("x는 "+x+"이고, "+"y는 "+y+"일 때,");
System.out.println("x | y = " +(x|y));
System.out.println("x & y = " +(x&y));
System.out.println("x ^ y = " +(x^y));
System.out.println("true | false= "+(true|false));
System.out.println("true & false= "+(true&false));
System.out.println("true ^ false= "+(true^false));
}

}

실행결과

x는 3이고, y는 7일 때,
x | y = 7
x & y = 3
x ^ y = 4
true | false= true
true & false= false
true ^ false= true

논리 연산자는 덧셈연산자'+'보다 연산우선순위가 낮기 때문에 괄호를 사용해야합니다.



댓글 없음:

댓글 쓰기