연산자의 종류
연산자는 여러 종류의 연산을 위해 존재한다.
산술 연산자
연산자 | 설명 |
+ | 왼쪽 피연산자와 오른쪽 피연사자를 더한다. |
- | 왼쪽 피연산자와 오른쪽 피연사자를 뺀다. |
* | 왼쪽 피연산자와 오른쪽 피연사자를 곱한다. |
/ | 왼쪽 피연산자와 오른쪽 피연사자를 나눈다. |
% | 왼쪽 피연산자와 오른쪽 피연사자를 나누고 나머지 값을 반환한다. |
비교 연산자
연산자 | 설명 |
> | 왼쪽 피연산자가 오른쪽 피연산자 보다 크면 참(true)을 반환한다. 아닐시 거짓(false) 반환 |
< | 왼쪽 피연산자가 오른쪽 피연산자 보다 작으면 참(true)을 반환한다. 아닐시 거짓(false) 반환 |
>= | 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 참(true)을 반환한다. 아닐시 거짓(false) 반환 |
<= | 왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같으면 참(true)을 반환한다. 아닐시 거짓(false) 반환 |
== | 왼쪽 피연산좌와 오른쪽 피연산자가 같으면 참(true)을 반환한다. 아닐시 거짓(false) 반환 |
!= | 왼쪽 피연산좌와 오른쪽 피연산자가 같지 않으면 참(true)을 반환한다. 아닐시 거짓(false) 반환 |
문자열 비교
문자열을 비교할 때에는 equals() 메소드를 사용해야 합니다.
String str1 = new String("NEW");
String str2 = new String("NEW");
System.out.println(str1.equals(str2));
논리 연산자
연산자 | 설명 |
&& | 논리식이 모두 참(true)이면 참(true)을 반환한다. (AND 연산) |
|| | 논리식중 둘중 하나라도 참(true)이면 참(true)을 반환한다. (OR 연산) |
! | 논리식이 참(true)이면 거짓(false)을 반환, 거짓(false)이면 참(true)을 반환한다. (NOT 연산) |
ex) 5 < x && x < 10 : x가 5보다 크고(그리고) x가 10보다 작다.
ex) i % 2 == 0 || i % 3 == 0 : i는 2의 배수 또는 3의 배수이다.
증감 연산자
연산자 | 설명 |
x++ | 피연산자를 1 증가 시키고 해당 연산을 진행한다. |
++x | 해당 연산을 먼저 진행하고 피연산자를 1 증가 시킨다. |
x-- | 피연산자를 1 감소 시키고 해당 연산을 진행한다. |
--x | 해당 연산을 먼저 진행하고 피연산자를 1 감소 시킨다. |
형변환 연산자
(타입)피연산자 | 변수 또는 상수의 타입을 다른 타입으로 변환 해준다. |
double x = 32.9;
int y = (int)x; // double형인 x를 int형으로 변환후 y에 대입
System.out.println(y);
소수점 아래로는 반올림하지 않고 다 버린 정수 32가 y에 대입이 되어 출력된다.
System.out.println((char)48); // int to char
System.out.println((int)'0'); // char to int
System.out.println((float)48); // int to float
(char)48의 결과로는 아스키코드 48인 '0'이 나온다.
(int)'0'의 결과로는 '0'의 아스키코드인 48이 나온다.
(float)48의 결과로는 48.0이 나온다.
int x = 1_000_000;
int y = 5_000_000;
long z = x * y; // 결과값이 오버플로우
long z = (long)x * y; // 형변환시 옳은 값이 나온다.
x는 10의 6 제곱 y도 10의 6 제곱이기에 둘이 곱하면 int의 범위를 넘어가기에 값이 오버플로우 된 값이 나온다.
따라서 x 또는 y를 long으로 형변환 해서 계산을 해야 알맞은 값이 들어간다.
산술 변환
연산 전에 피연산자의 타입을 일치시키는 것.
1. 두 피연산자의 타입을 같게 일치시킨다. (큰 타입으로 일치)
int (4 byte) + long (8 byte)
↘ long (8 byte) + long (8 byte) = long (8 byte)
int (4 byte) + float (4 byte)
↘ float (4 byte) + float (4 byte) = float (4 byte)
같은 크기이지만 float의 범위가 더 넓다.
double (8 byte) + float (4 byte) = double (8 byte)
↘ double (8 byte) + double (8 byte) = double (8 byte)
2. 피연산자의 타입이 int 보다 작은 타입이면 int로 변환한다.
byte (1 byte) + short (2 byte)
↘ int (4 byte) + int (4 byte) = int (4 byte)
char (2 byte) + short (2 byte)
↘ int (4 byte) + int (4 byte) = int (4 byte)
삼항 연산자
조건식의 결과에 따라 연산결과가 달라진다.
int a = 1;
int b = 2;
System.out.println( (a>b)? a:b );
a가 b보다 크다는 거짓이기 때문에 b인 2가 출력된다.
대입 연산자
연산자 | 설명 | 예시 |
= | 왼쪽 피연산자를 오른쪽 피연산자에 대입한다 | i = 3 |
+= | 왼쪽 피연산자에 오른쪽 피연산자를 더하고, 결과값을 왼쪽 피연산자에 대입한다. | i += 3 i = i + 3 |
-= | 왼쪽 피연산자에 오른쪽 피연산자를 빼고, 결과값을 왼쪽 피연산자에 대입한다. | i -= 3 i = i - 3 |
*= | 왼쪽 피연산자에 오른쪽 피연산자를 곱하고, 결과값을 왼쪽 피연산자에 대입한다. | i *= 3 i = i * 3 |
/= | 왼쪽 피연산자에 오른쪽 피연산자를 나누고, 결과값을 왼쪽 피연산자에 대입한다. | i /= 3 i = i / 3 |
%= | 왼쪽 피연산자에 오른쪽 피연산자를 나누고, 나머지 값을 왼쪽 피연산자에 대입한다. | i %= 3 i = i % 3 |
대입 연산자와 다른 연산자를 하나로 축약할 수 있다.
연산자의 우선순위
'JAVA 공부 > 기초 공부' 카테고리의 다른 글
[JAVA] 8. 반복문 (0) | 2023.01.30 |
---|---|
[JAVA] 7. 조건문 (0) | 2023.01.30 |
[JAVA] 5. 형변환 (0) | 2023.01.24 |
[JAVA] 4. 화면에서 입력 받기 (0) | 2023.01.23 |
[JAVA] 3. 상수, 리터럴 (1) | 2023.01.23 |