왼쪽 변수 = 오른쪽 변수 (또는 식, 값)
연산자 | 기능 | 연산 예 |
---|---|---|
+ | 두 항을 더한다 | 5+3 |
- | 앞에 있는 항에서 뒤에 있는 항을 뺀다 | 5-3 |
* | 두 항을 곱한다 | 5* 3 |
/ | 앞에 있는 항에서 뒤에 있는 항을 나누어 몫을 구한다 | 5/3 |
% | 앞에 있는 항에서 뒤에 있는 항을 나누어 나머지를 구한다 | 5%3 |
연산자 | 기능 |
---|---|
+= | 두 항의 값을 더해서 왼쪽 항에 대입한다 |
-= | 왼쪽 항에서 오른쪾 항을 빼서 그 값을 왼쪽 항에 대입한다 |
* = | 두 항의 값을 곱해서 왼쪽 항에 대입한다 |
/= | 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입한다 |
%= | 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입한다 |
<<= | 비트를 왼쪽으로 이동하고 그 값을 왼쪽 항에 대입한다 |
>>= | 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입한다 (왼쪽에 채워지는 비트 값은 부호 비트와 동일하다) |
>>>= | 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입한다 (왼쪽에 채워지는 비트 값은 0이다) |
&= | 두 항의 & 비트 연산 후 그 값을 왼쪽 항에 대입한다 |
|= | 두 항의 | 비트 연산 후 그 값을 왼쪽 항에 대입한다 |
^= | 두 항의 ^비트 연산 후 그 값을 왼쪽 항에 대입한다 |
num1 ☆ 2;
num 1 = num 1 +2;
두 표현법은 서로 같다
연산자가 항의 앞에 있는가 뒤에 있는가에 따라 연산 시점과 결과가 달라짐
문장(statement)의 끝(;)을 기준으로 연산 시점을 생각해야 함
연산자 | 기능 |
---|---|
++ | 항의 값에 1을 더한다 |
-- | 항의 값에서 1을 뺀다 |
val = ++num; // 먼저 num 값이 1 증가한 후 val 변수에 대입
val = num++; // val 변수에 기존 num 값을 먼저 대입한 후 num 값 1 증가
val = --num; // 먼저 num 값이 1 감소한 후 val 변수에 대입
val = num--; // val 변수에 기존 num 값을 먼저 대입한 후 num 값 1 감소
연산자 | 기능 |
---|---|
> | 왼쪽 항이 크면 참, 아님 거짓을 반환한다 |
< | 왼쪽 항이 작으면 참, 아님 거짓을 반환한다 |
>= | 왼쪽 항이 크거나 같으면 참, 아님 거짓을 반환한다 |
<= | 왼쪽 항이 작거나 같으면 참, 아님 거짓을 반환한다 |
== | 두 개 항의 값이 같으면 참, 아님 거짓을 반환한다 |
!= | 두 개 항의 값이 다르면 참, 아님 거짓을 반환한다 |
package ch12;
public class RealtionalTest {
public static void main(String[] args) {
int num1 = 5;
int num2 = 3;
boolean value = (num1 > num2);
System.out.println(value);
System.out.println(num1 < num2);
System.out.println(num1 >= num2);
System.out.println(num1 <= num2);
System.out.println(num1 == num2);
System.out.println(num1 != num2);
}
}
결과값 : T F T F F T
연산자 | 기능 | 연산 예 |
---|---|---|
&&(논리 곱) | 두 항이 모두 참인 경우에만 결과 값이 참, 아님 거짓이다 | booleanval = (5>3) && (5>2); |
||(논리 합) | 두 항 중 하나의 항만 참이면 결과 값은 참, 두 항이 모두 거짓이면 결과 값은 거짓이다 | booleanval = (5>3) |
!(부정) | 단항 연산자이다. 참인 경우는 거짓으로 바꾸고 거짓인 경우는 참으로 바꾼다 | booleanval = !(5>3); |
package ch12;
public class LogicalTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
boolean flag = (num1 > 0) && (num2 > 0);
System.out.println(flag);
flag = (num1 < 0) && (num2 > 0);
System.out.println(flag);
flag = (num1 > 0) || (num2 > 0);
System.out.println(flag);
flag = (num1 < 0) || (num2 > 0);
System.out.println(flag);
flag = !(num1 > 0);
System.out.println(flag);
}
}
결과 값 : T F T T F
- 논리 곱(&&)은 두 항의 결과가 모두 true일 때만 결과가 true
앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음
논리 합(||)은 두 항의 결과가 모두 false일 때만 결과가 false
앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음
package ch12;
public class ShortCircuit {
public static void main(String[] args) {
int num1 = 10;
int i = 2;
boolean value = ((num1 = num1 + 10 ) < 10) && ( ( i = i + 2 ) < 10);
System.out.println(value);
System.out.println(num1);
System.out.println(i);
value = ((num1 = num1 + 10 ) < 10) || ( ( i = i + 2 ) < 10);
System.out.println(value);
System.out.println(num1);
System.out.println(i);
}
}
결과 값 : F 20 2 T 30 4
조건식이 참이면 결과1, 조건식이 거짓이면 결과2가 선택된다
연산자 | 기능 | 연산 예 |
---|---|---|
조건식 ? 결과1 : 결과2; | 조건식이 참이면 결과1, 조건식이 거짓이면 결과2가 선택된다 | int (5>3) ? 10 : 20; |
package ch13;
import java.util.Scanner;
public class ConditionTest {
public static void main(String[] args) {
int max;
System.out.println("입력 받은 두 수중 큰 수를 출력하세요\n ");
Scanner scanner = new Scanner(System.in);
System.out.println("입력1:");
int x = scanner.nextInt();
System.out.println("입력2:");
int y = scanner.nextInt();
max = (x > y)? x : y;
System.out.println(max);
}
}
연산자 | 설명 | 예 |
---|---|---|
~ | 비트이 반전 (1의 보수) | a=~a; |
& | 비트단위 AND | 1&1 -> 1반환 그 외에는 0 |
| | 비트단위 OR | 0|0 -> 0반환 그 외에는 1 |
^ | 비트단위 XOR | 두 개의 비트가 서로 다른 경우에 1을 반환 |
<< | 왼쪽 shift | a<<2 변수 a를 2비트만큼 왼쪽으로 이동 |
>> | 오른쪽 shift | a>>2 변수 a를 2비트만큼 오른쪽으로 이동 |
>>> | 오른쪽 shift | >>동일한 연산 / 채워지는 비트가 부호와 상관 없이 0임 |
package ch13;
public class BitTest {
public static void main(String[] args) {
int num1 = 5; // 00000101
int num2 = 10; // 00001010
System.out.println(num1 | num2);
System.out.println(num1 & num2);
System.out.println(num1 ^ num2);
System.out.println(~num1);
System.out.println(num1 << 2);
System.out.println(num1);
System.out.println(num1 <<= 2);
System.out.println(num1);
}
}
결과 값 : 15 0 15 -6 20 5 20 20
우선순위 | 형 | 연산자 | 연산방향 |
---|---|---|---|
1 | 일차식 | (),[ ],. | → |
2 | 단항 | !,++,--,+,- | ← |
3 | 산술 | %,/ | → |
4 | 산술 | +,- | → |
5 | 비트이동 | <<,>> | → |
6 | 관계 | <,>,<=,>= | → |
7 | 관계 | ==,!= | → |
8 | 비트 곱 | & | → |
9 | 비트 차 | ^ | → |
10 | 비트 합 | | | → |
11 | 논리 곱 | && | → |
12 | 논리 합 | || | → |
13 | 조건 | ?: | → |
14 | 대입 | =,+=,-=,* =,%=,/= | ← |