- 비교 연산자
비교 연산자는 연산자의 좌우 값을 비교하는 연산자입니다. 산수의 부등호와 같은 역할을 수행하며, 결과는 boolean형(true 혹은 false)로 반환됩니다.
import java.io.*;
class Main {
public static void main(String[] args) {
int a = 4;
int b = 3;
System.out.println( a < b );
}
}
위 예제 코드에서 int형 변수 a, b는 각각 4와 3이라는 숫자로 초기화되었고, 6번째 줄을 보면 a < b에 비교 연산자가 사용되었습니다.
a와 b에 대입된 값을 적용해 보면 "4 < 3"라는 비교 연산으로 볼 수 있습니다. 그런데 4는 3보다 큰 숫자이므로 4 < 3은 잘못된 조건이므로 false가 출력됩니다.
여기서 "==" 연산자와 "=" 연산자를 혼동하지 않도록 유의하시기 바랍니다.
"="은 일반적인 산수에서는 "좌, 우측이 같다"라는 뜻이지만 프로그래밍에서는 "우측의 값을 좌측에 대입한다"라는 뜻이며, 프로그래밍에서 "좌, 우측이 같다"를 나타내는 연산자는 "=="이니 쉽게 헷갈릴 수 있습니다.
- 논리 연산자
논리 연산자는 비교 연산자를 통해 도출된 true/false에 대한 논리 조합이며,AND(&&), OR(||), NOT(!) 총 세 가지를 사용할 수 있습니다.
AND( && ) 연산자는 좌우 값이 모두 true일 경우에만 true이고 그 외의 경우는 전부 false를 반환합니다.
import java.io.*;
class Main {
public static void main(String[] args) {
System.out.println( true && true ); // true이고 true이면 true
System.out.println( true && false ); // true이고 false이면 false
System.out.println( false && true ); // false이고 true이면 false
System.out.println( false && false ); // false이고 false이면 false
}
}
좌우 값 중 단 하나라도 false가 있으면 false가 출력됩니다.
OR( || )연산자는 좌우 값 중 하나라도 true일 경우 true가 반환됩니다.
import java.io.*;
class Main {
public static void main(String[] args) {
System.out.println( true || true ); // true이고 true이면 true
System.out.println( true || false ); // true이고 false이면 true
System.out.println( false || true ); // false이고 true이면 true
System.out.println( false || false ); // false이고 false이면 false
}
}
OR 연산자의 좌우 값이 둘 다 false일 때를 제외하고 전부 다 true가 출력됩니다.
NOT(!)연산자는 true를 false로 false를 true로 뒤바뀝니다.
import java.io.*;
class Main {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println(!(a == b));
}
}
6번째 줄에서 a == b라는 조건은 a와 b가 서로 다른 숫자이므로 false가 반환되는 것이 맞습니다.
하지만 그 결과에 NOT 연산자가 사용되어 출력되는 결과는 true가 됩니다.
- 비트 연산자
비트 연산자의 경우 자바에서는 잘 사용되지 않는 연산자 이므로 가볍게 읽고 넘어가겠습니다.
시프트 연산자( << , >> , >>> )는 비트를 좌, 우로 밀어주는 연산자입니다.
<< (왼쪽 시프트 연산자)는 비트를 왼쪽으로 밀어낸 뒤 공백을 0으로 채웁니다.
예를 들어 11001010을 왼쪽으로 두 칸 밀고 싶다면 11001010 << 2라고 작성하며 그 결과 값은 00101000 이 됩니다.
왼쪽에 있던 11이 사라지고 오른쪽 끝에 00이 붙은 것을 볼 수 있습니다.
>> (오른쪽 시프트 연산자)는 비트를 오른쪽으로 밀어내지만, 밀어내기 전 가장 왼쪽 비트와 동일한 숫자로 공백을 채웁니다.
예를 들어 11001010 을 오른쪽으로 세 칸 밀고 싶다면 11001010 >> 3이라고 작성하며 그 결과 값은 11111001 이 됩니다.
오른쪽에 있던 010 이 사라지고, 왼쪽에는 111이 추가된 것을 볼 수 있습니다.
밀어내기 전 가장 왼쪽에 있던 숫자가 1이기 때문에 1이 3개 추가되는 겁니다. 마찬가지로 01100110 >> 3의 결과 값은 00001100 이 됩니다.
만약 오른쪽으로 밀어낼 때 공백을 0으로 채우고 싶다면 >>> (논리 오른쪽 시프트 연산자)를 사용해 봅시다. >>> 는 비트를 우측으로 밀어내면서 공백을 0으로 채우는 연산자입니다. 즉, 11001010 >>> 2의 결과 값이 00110010 이 되도록 만듭니다.
'비전공자의 개발과 친해지기 > 연산자' 카테고리의 다른 글
[JAVA : 연산자]4. 연산자의 우선순위 및 문자열의 연결 (1) | 2022.04.08 |
---|---|
[JAVA : 연산자]2. 복합 대입 연산자와 증감연산자 (0) | 2022.04.07 |
[JAVA : 연산자]1. 연산자 (0) | 2022.04.07 |