++(postfix), --(postfix)
+(양수 부호), -(음수 부호), ~, !, ++(prefix), --(prefix)
강제 형 변환(Casting)
, /, %
+(덧셈), -(뺄셈)
<<, >>, >>>
<, >, <=, >=, instanceof
==, !=
&(비트 AND)
^(비트 XOR)
|(비트 OR)
&&(논리 AND)
||(논리 OR)
? :
=, +=, -=, =, /=, %=
* 위로 갈수록 우선순위가 높고, 아래로 갈수록 우선순위가 낮다.
- 25의 앞자리와 뒷자리 분리 : 25를 10으로 나눈 몫은 2, 나머지는 5
- 짝수와 홀수 : 2로 나눈 나머지가 0이면 짝수, 1이면 홀수
- 3의 배수 : 3으로 나눈 나머지가 0이면 3의 배수
- 0 ~ 6 사이 값 사용 : 7로 나눈 나머지를 사용
int n = 25;
int ten = n / 10; // 2 출력
int one = n % 10; // 5 출력
문자열 연결 연산자 : +
"안녕" + "하세요" → "안녕하세요"
100 + "주년" → "100주년"
1 + 1 + "행사" → "2행사"
100 + "" → "100"
String str1 = 100 +""; // String.valueOf(100)과 동일.
System.out.println(str1); // "100"
* 자주 사용하므로 많이 연습하기!
대입 연산 : =, 등호(=) 오른쪽의 값을 왼쪽으로 대입한다.
int score = 95;
→ 95를 score에 대입.
int 95 = score
→ score를 95에 대입X
int x = 10;
int y = 20;
int temp;
temp = x;
x = y;
y = temp;
System.out.println(x); // 20 출력
System.out.println(y); // 10 출력
복합 대입 연산 : 더하기(+=), 빼기(-=), 곱하기(*=), 나누기(/=), 나머지(%=) ...
int wallet = 0;
wallet += 5000; // wallet = wallet + 5000;
wallet -= 3000; // wallet = wallet - 3000;
long balance = 10000;
balance *= 1.05; // balance를 double로 Promotion해서 처리한다.
System.out.println(balance); // 10500 출력
전위 연산 : 변수 a의 값을 1 증감시키고 사용한다. (ex. ++a, --a)
int a = 1;
int b = ++a;
System.out.println(a); // 2 출력
System.out.println(b); // 2 출력
후위 연산 : 변수 a의 값을 사용 후 1 증감시킨다. (ex. a++, a--)
int x = 1;
int y = x++;
System.out.println(x); // 2 출력
System.out.println(y); // 1 출력
int i = 1;
int j = 1;
int result = i++ + --j;
System.out.println(i); // 2 출력
System.out.println(j); // 0 출력
System.out.println(result); // 1 출력
> : 초과
< : 미만
>= : 이상
<= : 이하
== : 같다
!= : 다르다
int a = 7;
int b = 2;
boolean result1 = a > b; // true
boolean result2 = a < b; // false
boolean result3 = a >= b; // true
boolean result4 = a <= b; // false
boolean result5 = a == b; // false
boolean result6 = a != b; // true
- 논리 AND : &&, 모두 true이면 true / 하나라도 false이면 false
- 논리 OR : ||, 하나라도 true이면 true / 모두 false이면 false
- 논리 NOT : !, true이면 false / false이면 true
int a = 10;
int b = 10;
boolean result1 = (a == 10) && (b == 10); // true
boolean result2 = (a == 10) || (b == 10); // true
boolean result3 = (a == 10) && (b == 20); // false
boolean result4 = (a == 10) || (b == 20); // true
int c = 10;
boolean result5 = !(c == 10); // false
boolean result6 = !(c == 20); // true
int n = 95;
boolean result7 = (n += 10) > 100;
System.out.println(n); // 105 출력
System.out.println(result7); //true
int x = 9;
boolean result8 = ++x == 10;
System.out.println(x); // 10 출력
System.out.println(result8); //true
- Short Circuit Evaluation : 논리 AND나 논리 OR의 연산 결과를 이미 알고 있는 경우 더 이상 연산을 진행하지 않는 것을 의미한다.
- 논리 AND
: false가 발생하면 더 이상 진행하지 않는다. 최종 결과는 false이므로.
- 논리 OR
: true가 발생하면 더 이상 진행하지 않는다. 최종 결과는 true이므로.
int i = 10;
int j = 10;
boolean result9 = (i == 20) && (++j == 11);
System.out.println(result9); // false
System.out.println(j); // 11이 아니라 10 _ 진행하지 않았기 때문에
boolean result10 = (i == 10) || (++j == 11);
System.out.println(result10); // true
System.out.println(j); // 11이 아니라 10 _ 진행하지 않았기 때문에
- 조건식 ? true인 경우 값 : false인 경우 값
public class Operator {
public static void main(String[] args) {
int age = 17;
String message;
message = (age >= 20) ? "성인" : "미성년자";
System.out.println(message);
}
}
int rank = 1;
String medal = (rank == 1) ? "금" : (rank == 2) ? "은" : (rank == 3) ? "동" : "없음";
System.out.println(medal); // 금메달
int n = 2;
String type = (n % 2 == 1) ? "홀수" : "짝수";
System.out.println(type); // 짝수
int a = 15;
String type2 = (a % 3 == 0) ? "3의배수" : (a % 2 == 1) ? "홀수" : "짝수";
System.out.println(type2); // 3의배수
int serial = 1234567;
String gender = (serial / 1000000) % 2 == 1 ? "남자" : "여자";
System.out.println(gender); // 남자