자바가 제공하는 다양한 연산자 학습
산술
연산자비트
연산자관계
연산자논리
연산자instanceof
=
) operator->
) 연산자3항
연산자switch
연산자👀 산술 연산자(Arithmetic Operators)는 수학적인 계산에 사용되는 연산자다.
java에서 산술연산자는 어떻게 사용할까? 아래 java code로 살펴보자.
int a = 13;
int b = 4;
System.out.println(a + b); // 17
System.out.println(a - b); // 9
System.out.println(a * b); // 52
System.out.println(a / b); // 3
System.out.println(a % b); // 1
정수형 byte
short
long
모두 동일하게 적용된다.
😲 실수형은?
double a = 13; double b = 4; System.out.println(a + b); // 17.0 System.out.println(a - b); // 9.0 System.out.println(a * b); // 52.0 System.out.println(a / b); // 3.25 System.out.println(a % b); // 1.0
🚫 주의사항
5 / 0 or 5 % 0 // 정수형
5 / 0.0 // 실수형
5 % 0.0 // 실수형
연산 결과가 Infinity 또는 NaN 인지 확인하려면 아래와 같은 메서드를 사용하여 확인이 가능하다.
FLoat.isInfinite(inf);
FLoat.isNaN(nan);
Double.isInfinite(inf);
Double.isNaN(nan);
👀 비트연산은 2진수 형태의 숫자 0과 1로 할 수 있는 연산이다.
비트연산자를 사용하여 시간복잡도를 줄일 수 있는 효과를 볼 수 있고 다양한 알고리즘에서 활용할 수 있다.
java 비트 연산자는 비트 논리 연산자와 비트 쉬프트 연산자로 구분된다.
연산자 | 의미 |
---|---|
& (AND) | 피연산자 중 양쪽이 모두 1일 때만 1이 되며, 그 외에는 0이 된다 |
l (OR) | 피연산자 중 한쪽이 1이면 1이도 되며, 그 외에는 0이 된다 |
^ (XOR) | 피연산자의 값이 서로 다른 경우에만 1이 되며, 그 외에는 0이 된다 |
~ (NOT) | 모든 비트를 반대로 뒤집는다 |
Code :
int x = 10; // 1010
int y = 12; // 1100
System.out.println("x.toBianry = " + Integer.toBinaryString(x));
System.out.println("y.toBianry = " + Integer.toBinaryString(y));
System.out.println("x & y = " + Integer.toBinaryString(x&y));
System.out.println("x | y = " + Integer.toBinaryString(x|y));
System.out.println("x ^ y = " + Integer.toBinaryString(x^y));
System.out.println("~x = " + Integer.toBinaryString(~x));
Output :
x.toBianry = 1010
y.toBianry = 1100
x & y = 1000
x | y = 1110
x ^ y = 110
~x = 11111111111111111111111111110101
x ^ y
연산 같은 경우 실제 bit는00000000000000000000000000110
이 된다.
~x
1의 보수의 형태로 모든 bit가 반대로 뒤집히는걸 볼 수 있다.🧐 왜 반대로 뒤집혔는데 숫자가 저렇게 길죠?!
int = 4byte, 1byte당 8bit, 총 32bit를 표현한다.
쉬프트 연산자는 피연산자의 각 비트들을 '오른쪽(>>)' 또는 '왼쪽(<<)'으로 이동시킨다.
연산자자 | 의미 |
---|---|
>> | bit값을 오른쪽으로 이동, 빈 자리는 부호값으로 대입한다 |
<< | bit값을 왼쪽으로 이동, 빈 자리는 0으로 대입한다 |
>>> | bit값을 오른쪽으로 이동, 빈자리는 0으로 대입한다 |