변수에 값을 대입하는 연산자 ex) int age = 24;
+
: 변수나 상수 값을 양수로 만든다.
-
: 변수나 상수 값을 음수로 만든다
int num = 10;
System.out.println(+num); // 10
System.out.println(-num); // -10
System.out.println(num); // 10
num = -num; // 음수로 변경
System.out.println(num); // -10
+
: 두 항을 더한다.
-
: 앞에 있는 항에서 뒤에 있는 항 빼기
*
: 두 항을 곱한다.
/
: 앞에 있는 항에서 뒤에 있는 항 나누어 몫 구하기
%
: 앞에 있는 항에서 뒤에 있는 항 나누어 나머지 구하기
int mathScore = 90;
int engScore = 70;
int totalScore = mathScore + engScore;
System.out.println(totalScore); // 160
double avgScore = totalScore / 2.0;
System.out.println(avgScore); // 80.0
++
: 항의 값에 1을 더한다.
--
: 항의 값에 1을 뺀다.
int gameScore = 150;
int lastScore1 = ++gameScore;
System.out.println(lastScore1); // 151;
int lastScore2 = --gameScore;
System.out.println(lastScore2); // 150
int value = 10;
int num = ++value;
System.out.println(num); // 11
int num2 = value++;
System.out.println(num2); // 11
>
: 왼쪽 항이 크면 참, 아니면 거짓 반환
<
: 오른쪽 항이 크면 참, 아니면 거짓 반환
>=
: 왼쪽 항이 크거나 같으면 참, 아니면 거짓 반환
<=
: 오른쪽 항이 크거나 같으면 참, 아니면 거짓 반환
==
: 두 개 항의 값이 같으면 참, 아니면 거짓 반환
!=
: 두 개 항이 다르면 참, 아니면 거짓 반환
int myAge = 28;
boolean value = (myAge > 25);
System.out.println(value); // true
&&
: 두 항이 모두 참인 경우에만 결과 값이 참, 그렇지 않으면 거짓
||
: 두 항 중 하나의 항만 참이면 결과 값은 참, 두 항 모두 거짓이면 결과 값은 거짓
!
: 단항 연산자로, 참인 경우는 거짓으로 변경하고, 거짓인 경우는 참으로 변경
int num1 = 10;
int num2 = 20;
boolean flag = (num1 > 0) && (num2 > 0);
System.out.println(flag); // flag는 참
flag = (num1 < 0) && (num2 > 0);
System.out.println(flag); // 거짓
flag = (num1 < 0) || (num2 > 0);
System.out.println(flag); // 참
❗️단락 회로 평가: 논리 연산에서 모든 항이 실행되지 않는 경우
int num1 = 10;
int i = 2;
// ((i = i + 2) < 10)은 실행되지 않음! 앞의 식이 이미 false 이므로
boolean value = ((num1 = num1 + 10) < 10) && ((i = i + 2) < 10);
System.out.println(value); // false
System.out.println(num1); // 20
System.out.println(i); // 2
// ((i = i + 2) < 10)은 실행되지 않음! 앞의 식이 이미 true 이므로
value = ((num1 = num1 + 10)) > 10 || ((i = i + 2) < 10);
System.out.println(value); // true
System.out.println(num1); // 30
System.out.println(i); // 2
연산자 | 기능 |
---|---|
+= | 두 항의 값을 더해서 왼쪽 항에 대입 |
-= | 왼쪽 항에서 오른쪽 항을 뺴서 그 값을 왼쪽 항에 대입 |
*= | 두 항의 값을 곱해서 왼쪽 항에 대입 |
/= | 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입 |
%= | 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입 |
<<= | 비트를 왼쪽으로 이동하고 그 값을 왼쪽 항에 대입 |
>>= | 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입(왼쪽에 채워지는 비트는 부호 비트와 동일) |
>>>= | 비트를 오른쪽으로 이동하고 그 값을 왼쪽항에 대입(왼쪽에 채워지는 비트는 0) |
&= | 두 항의 & 비트 연산 후 그 값 왼쪽 항에 대입 |
|= | 두 항의 | 비트 연산 후 그 값 왼쪽 항에 대입 |
^= | 두 항의 ^ 비트 연산 후 그 값 왼쪽 항에 대입 |
조건식 ? 결과 1 : 결과 2
조건식이 참이면 결과 1, 조건식이 거짓이면 결과 2 선택
두 개의 비트 값이 모두 1인 경우에만 연산의 결과 값이 1이됨
두 개의 비트 값이 하나라도 1이면 연산 결과 값이 1이 됨
같은 값이면 0, 다른 값이면 1
비트 값을 0은 1로, 1은 0으로 바꾸는 연산
왼쪽으로 비트 이동하는 연산자
int num = 5; // 0 0 0 0 0 1 0 1
num << 2; // 0 0 0 1 0 1 0 0
오른쪽으로 비트 이동하는 연산자
int num = 10; // 0 0 0 0 1 0 1 0
num >> 2; // 0 0 0 0 0 0 1 0
오른쪽으로 비트 이동하는데, 왼쪽에 채워지는 비트값이 무조건 0
우선순위 | 형 | 연산자 | 연산방향 |
---|---|---|---|
1 | 일차식 | ()[]. | -> |
2 | 단항 | ! ++ -- + - | <- |
3 | 산술 | % / * | -> |
4 | 산술 | + - | -> |
5 | 비트 이동 | << >> | -> |
6 | 관계 | < > <= >= | -> |
7 | 관계 | == != | -> |
8 | 비트 곱 | & | -> |
9 | 비트 차 | ^ | -> |
10 | 비트 합 | | | -> |
11 | 논리 곱 | && | -> |
12 | 논리 합 | || | -> |
13 | 조건 | ?: | -> |
14 | 대입 | = += -= *= %= /= | <- |