연산자의 종류
1. 단항 연산자
부호 연산자(+, -)
int x = -100;
int result1 = +x; // -100
int result2 = -x; // 100
부호 연산도 연산! 결과값은 int 타입이므로 int타입 변수에 저장해야한다.
증감 연산자 (++, --)
++ 피연산자 : 다른 연산을 수행하기 전에 피연산자의 값을 1 증가시킴
-- 피연산자 : 다른 연산을 수행하기 전에 피연산자의 값을 1 감소시킴
피연산자 ++ : 다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴
피연산자 -- : 다른 연산을 수행한 후에 피연산자의 값을 1 감소시킴
논리 부정 연산자 (!)
!피연산자 : 피연산자가 true이면 false값을 산출, 피연산자가 false이면 true값을 산출
2. 이항 연산자
산술 연산자 (+, 0, *, /, %)
산술 연산자는 boolean 타입을 제외한 모든 기본 타입에 사용할 수 있다.
- 피연산자들이 byte, short, char 타입인 경우 모두 int 타입으로 변환된 후에 연산을 수행한다.
- 피연산자들이 모두 정수 타입이고 long 타입이 포함되어 있을 경우, 모두 long 타입으로 변환된 후 연산을 수행한다.
- 피연산자 중 실수 타입(float, double)이 있을 경우, 허용 범위가 큰 실수 타입으로 변환된 후 연산을 수행한다.
char 타입도 정수 타입이므로 산술 연산이 가능하다.
char c1 = 'A' + 1; // 66
System.out.println("c1: " + c1); // c1: B
// char c2 = c1 + 1; 컴파일 에러! int에 저장해야함!
int c2 = c1 + 1;
char c2 = (char)(c2 + 1);
문자열 결합 연산자(+)
피연산자 중 한쪽이 문자열이면 + 연산자는 문자열 결합 연산자로 사용되어 다른 피연산자를 문자열로 변환하고 서로 결합한다. 그러나 연산되는 순서에 따라 달라지므로 주의해야한다.
String str1 = "JDK" + 3 + 3.0; // JDK33.0
String str2 = 3 + 3.0 + "JDK" // 6.0JDK
비교 연산자(<, <=, >, >=, ==, !=)
대소, 또는 동등 연산자로 true / false를 산출한다. 대소 연산자는 boolean을 제외한 기본 타입에서 사용할 수 있고, 동등 연산자는 모든 타입에 사용할 수 있다.
피연산자가 char 타입이면 유니코드 값으로 비교 연산을 수행한다.
('A' < 'B') => (65 < 66)
비교 연산자에서도 연산을 수행하기 전, 피연산자의 타입을 일치시킨다.
'A' == 65 => 65 == 65 => true
3 == 3.0 => 3.0 == 3.0 => true
한 가지 예외가 있다. double과 float를 비교할 때는, 피연산자를 모두 float이나 정수 타입으로 변환하지 않는 이상 같다고 볼 수 없다. 왜냐하면 실수의 저장 방식인 부동 소수점 방식이 실수를 정확하게 표현할 수 없기 때문이다.
0.1 == 0.1f => false
논리 연산자(&&, ||, &, |, ^, !)
논리 연산자의 피연산자는 boolean 타입만 사용할 수 있다.
1) AND (논리곱)
&& 또는 & : 피연산자 모두가 true일 경우에만 연산 결과가 true
&&는 앞의 피연산자가 false일 경우 뒤의 피연산자를 평가하지 않고 바로 산출 결과를 내지만, &는 두 피연산자를 모두 평가한다. 따라서 &&가 더 효율적이다.
2) OR (논리합)
|| 또는 | : 피연산자 중 하나만 true이면 연산 결과는 true
||도 |보다 효율적이다.
3) XOR (배타적 논리합)
^ : 피연산자가 하나는 true이고 다른 하나가 false일 경우에만 연산 결과가 true
4) NOT (논리 부정)
! : 피연산자의 논리값을 바꿈
대입 연산자(=, +=, -=, *=, /=. %=)
1) 단순 대입 연산자
= : 오른쪽의 피연산자의 값을 왼쪽 변수에 저장
2) 복합 대입 연산자
변수 += 피연산자 => 변수 = 변수 + 피연산자
변수 -= 피연산자 => 변수 = 변수 - 피연산자
*=, /=, %=, &=, |=, ^= 도 같은 방식으로 작동한다.
3. 삼항 연산자
조건식 ? 값 또는 연산식 : 값 또는 연산식
'Language > Java' 카테고리의 다른 글
[JAVA] 연산자와 연산식 (0) | 2023.06.05 |
---|---|
[JAVA] 변수와 시스템 입출력 (0) | 2023.06.05 |
[JAVA] 타입 변환 (0) | 2023.06.05 |
[JAVA] 기본 타입 (0) | 2023.06.05 |
댓글