Operator
항 operand
: 연산에 사용되는 값
연산자 operator
: 항 operand
을 이용해서 계산하거나 비교하는데 사용하는 기호
Arithmetic Operator
사칙연산자와 나머지를 구하는 연산자
산술연산자는 두 개의 항을 가지는 이항연산자
연산방향은 왼쪽에서 오른쪽이다.
byte
short
char
int
자료형 사이의 연산은 결과가 정수 기본형인 int
로 처리된다.
long
float
double
은 큰 자료형 long < float < double
으로 결과가 처리된다.
산술연산자 | 기능 | 예시 |
---|---|---|
+ | 왼쪽 항에 오른쪽 항을 더한다. | result = 1 + 2 , result = i + j |
- | 왼쪽 항에서 오른쪽 항을 뺀다. | result = 1 - 2 , result = i - j |
* | 왼쪽 항에 오른쪽 항을 곱한다. | result = 1 * 2 , result = i * j |
/ | 왼쪽 항을 오른쪽 항으로 나눈다. | result = 1 / 2 , result = i / j |
% | 왼쪽 항을 오른쪽 항으로 나누고 나머지를 구한다. | result = 1 % 2 , result = i % j |
Increment
& Decrement
변수의 값을 1 증가시키거나 1 감소시키는 연산자
단항연산자
변수를 기준으로 연산자의 위치가 앞에 있는지 뒤에 있는지에 따라 연산 시점과 결과가 다르다.
++변수
는 변수 = 변수 + 1
과 같은 연산이다.
증감연산자 | 기능 | 예시 |
---|---|---|
++변수 | 선증가 연산자 | val = ++num; // 먼저 num 값이 1 증가한 후 val 변수에 대입 |
변수++ | 후증가 연산자 | val = num++; // val 변수에 기존 num 값을 대입한 후 num 값이 1 증가 |
--변수 | 선감소 연산자 | val = --num; // 먼저 num 값이 1 감소한 후 val 변수에 대입 |
변수-- | 후감소 연산자 | val = num--; // val 변수에 기존 num 값을 대입한 후 num 값이 1 감소 |
Comparison
값을 비교하여 결과를 true
, false
로 반환하는 연산자
이항연산자
조건문, 반복문의 조건식으로 많이 사용된다.
기본 자료형이 아닌 참조 자료형 reference data type
인 경우 ==
, !=
연산자만 가능하다.
연산자 | 기능 | 예시 |
---|---|---|
== | 왼쪽 항이 오른쪽 항과 같으면 true , 아니면 false 를 반환한다. | num == 1 |
!= | 왼쪽 항이 오른쪽 항과 같으면 false , 아니면 true 를 반환한다. | num != 1 |
< | 왼쪽 항이 오른쪽 항보다 작으면 true , 아니면 false 를 반환한다. | num < 1 |
<= | 왼쪽 항이 오른쪽 항보다 작거나 같으면 true , 아니면 false 를 반환한다. | num <= 1 |
> | 왼쪽 항이 오른쪽 항보다 크면 true , 아니면 false 를 반환한다. | num > 1 |
>= | 왼쪽 항이 오른쪽 항보다 크거나 같으면 true , 아니면 false 를 반환한다. | num >= 1 |
public class ComparisonTest {
public static void main(String[] args) {
int num1 = 8;
int num2 = 4;
boolean value = (num1 > num2); // 8 은 4 보다 크다. true 를 반환한다.
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);
}
}
Logical Operator
논리연산자는 양쪽 항들의 boolean
값을 비교하는 연산자
비교연사자와 혼합하여 많이 사용된다.
연산의 결과는 true
, false
로 반환된다.
논리연산자 | 기능 | 예시 |
---|---|---|
&& (논리 곱) | 양쪽 항이 모두 true 인 경우에만 결과 값이 true , 아니면 false 로 반환된다 | (7>3) && (7>2) |
|| (논리 합) | 양쪽 항 중에서 하나의 항이라도 true 면 결과 값은 true , 양쪽 항 모두 false 면 false 로 반환된다. | (7>3) || (7>2) |
! (부정) | true 인 경우 false 로 바꾸고 false 인 경우 true 로 바꾼다. 단항연산자. | val = !(7>3) |
public class LogicalTest {
public static void main(String[] args) {
boolean val;
int i = 3;
int j = 7;
val = (i > 0) && (j > 0);
System.out.println(flag);
val = (i < 0) && (j > 0);
System.out.println(val);
val = (i > 0) || (j > 0);
System.out.println(val);
val = (i < 0) || (j > 0);
System.out.println(val);
val = !(i > 0);
System.out.println(val);
}
}
단락 회로 평가 short circuit evaluation
논리 연산에서 모든 항의 연산을 실행하지 않아도 논리 연산의 결과를 알 수 있는 경우이다.
항1 && 항2
왼쪽 항이 false
면 오른쪽 항은 검사하지 않는다.
왼쪽 항이 false
면 오른쪽 항 true
, false
상관없이 논리연산의 결과는 false
논리 곱은 양쪽 항 모두 true
일 경우에만 결과가 true
로 반환되기 때문에 하나라도 false
면 false
결과 값을 가진다.
항1 || 항2
왼쪽 항이 true
면 오른쪽 항은 검사하지 않는다.
왼쪽 항이 true
면 오른쪽 항 true
, false
상관없이 논리연사의 결과는 true
논리 합은 양쪽 항 모두 false
일 경우에만 결과가 false
로 반환되기 때문에 하나라도 true
면 true
결과 값을 가진다.
x | y | x && y | x || y | |
---|---|---|---|---|
true | true | ★ true ★ | true | && 논리곱은 이 경우에만 true |
true | false | false | true | |
false | true | false | true | |
false | false | false | ★ false ★ | || 논리합은 이 경우에만 false |
Ternary Operator
3개의 항으로 이루어진 연산자
조건식의 결과가 true
, false
인 경우에 따라 다른 결과가 수행된다.
조건항 ? 항1 : 항2
조건항의 결과가 true
이면 항1이 되고 false
이면 항2가 된다.
int val1 = 10 > 20 ? 100 : 200; // val1의 값은 10 이고 20 보다 크지 않으므로 false
// false 이므로 val1의 값은 200 이 된다.
int val2 = 10 < 20 ? 100 : 200; // val2의 값은 10 이고 20보다 작아서 true
// true 이므로 val2의 값은 100 이 된다.
int val3 = 10;
int val4 = val3 > 20 ? 1000 : 2000; // 조건식 val3 > 20 은 false
// val4 = 2000
Assignment Operator
대입연산자 =
는 오른쪽 항의 값이나 연산결과를 왼쪽 항의 변수에 대입하는 연산자
이항연산자 중에서 우선 순위가 가장 낮다.
왼쪽 변수 = 오른쪽 변수 (또는 식, 값 )
대입연산자는 축약이 가능하다.
연산자 | 기능 | 예시 |
---|---|---|
+= | 양쪽 항의 값을 더해서 왼쪽 항에 대입한다. | i=i+1 , i+=1 |
-+ | 왼쪽 항에서 오른쪽 항을 빼고 그 값을 왼쪽 항에 대입한다. | i=i-1 , i-=1 |
*= | 양쪽 항을 곱하고 그 값을 왼쪽 항에 대입한다. | i=i*2 , i*=2 |
/= | 왼쪽 항을 오른쪽 항으로 나누고 그 몫을 왼쪽 항에 대입한다. | i=i/2 , i/=2 |
%= | 왼쪽 항을 오른쪽 항으로 나누고 그 나머지를 왼쪽 항에 대입한다. | i=i%2 , i%=2 |