
- 연산자: 연산을 수행하는 기호
(+, -, *, / ...)
- 피연산자: 연산자의 연산 수행 대상
(정수,실수,논리형 변수 ...)
❗ 연산자는 모든 연산결과를 반환한다.
| 종류 | 연산자 | 설명 |
|---|---|---|
| 산술 연산자 | +, -, *, /, % | 사칙연산과 나머지 연산(%) |
| 증감 연산자 | ++, -- | 1씩 증가 감소시키는 연산자 |
| 비교 연산자 | >, <, >=, <=, ==, != | 크고 작음과 같고 다름을 비교 |
| 논리 연산자 | &&, | |, !, | 그리고(AND)와 또는(OR)으로 조건을 연결, 논리부정 연산자(!) |
| 대입 연산자 | = | 오른쪽 값을 왼쪽 변수에 저장 |
| 비트 연산자 | &, |, ^ | AND(&), OR(|), XOR(^) |
| 기타 | (type) ?: instanceof | 형변환 연산자(type), 삼항 연산자(?:), instanceof연산자 |
하나의 식에 연산자가 둘 이상 있을때, 어떤연산을 먼저 수행할지를 자동 결정하는것
우선순위가 같은 연산자가 있을때,
대입,단항 연산자를 제외한 모두 왼쪽에서 오른쪽으로 연산(->)
- +(덧셈), -(뺄셈), *(곱셈), /(나눗셈)
- 나눗셈을 할때, 정수형일때는 값손실이 발생할 수도 있음.
- int / int = int로 나오기때문
연산 전에 피연산자의 타입을 일치시키는 것.
실수를 소수점 첫 째자리에서 반올림한 정수를 반환
long result = Math.round(4.52);
long result = 5;
오른쪽 피연산자로 나누고 남는 나머지를 반환
나누는 피연산자는 0이 아닌 정수만 허용 (부호는 무시됨)
- 10 % 8 == 10 % (-8) == 2
- 증가 연산자(++) + 감소 연산자(--)
- 피연산자의 값을 1 증가(++), 감소(--)시키는 연산자
| 타입 | 설명 | 사용예 |
|---|---|---|
| 전위형 | 값이 참조되기 전에 증가(감소)시킨다 | j = ++(--)i; |
| 후위형 | 값이 참조된 후에 증가(감소)시킨다 | j = i++(--); |
❗ 증감 연산자가 독립적으로 사용된 경우, 전위형과 후위형의 차이가 없다!
- '-'는 피연산자의 부호를 반대로 변경
- '+'는 아무런 일도 하지않음.(사용X)
두 피연산자를 비교해서 true(참) 또는 false(거짓)을 반환
🔻 대소비교 연산자의 종류와 결과
| 비교연산자 | 연산결과 |
|---|---|
| > | 좌변 값이 크면, true. 아니면 false. |
| < | 좌변 값이 작으면, true. 아니면 false. |
| >= | 좌변 값이 크거나 같으면, true. 아니면 false. |
| <= | 좌변 값이 작거나 같으면, true. 아니면 false. |
🔻 등가비교 연산자의 종류와 결과
| 비교연산자 | 연산결과 |
|---|---|
| == | 두 값이 같으면, true. 아니면 false. |
| != | 두 값이 다르면, true. 아니면 false. |
문자열의 비교에는 ==대신 equals()를 사용해야 한다.
동등성과 동일성의 차이 -나중에 배움
조건식을 연결할 때 사용하는 연산자
| |(OR) : 피연산자 중 어느 한쪽이라도 true이면 true.
i % 2 == 0 || i % 3 == 0 //(i는 2또는 3의 배수)
&&(AND) : 피연산자 양쪽 모두 true이어야 true.
10 < x && x < 30 // 10 < x < 30 (x는 10보다 크고 30보다 작다)
| |, && 가 섞여있는 경우는 괄호를 통해 연산 순서를 명확하게 하도록 하자.
('a' <= ch <= 'z') || ('A' <= && ch <= 'Z') // 문자 ch는 대문자 또는 소문자이다.
true -> false로, false -> true로 바꾼다.
boolean b = true;
!b == false;
조건식의 결과에 따라 연산결과를 달리한다.
반환받을 변수 = (조건식)? 식1(참일때):식2(거짓일때)
result = (x>y)? x : y ; //( x가 y보다 크면 x를, 아니라면 y를 반환.)
/*
=> if(x>y)
return x;
else
return y;
*/
오른쪽 피연산자를 왼쪽 피연산자에 저장 후 저장된 값을 반환.
lvalue, rvalue
복합 대입 연산자
대입 연산자와 다른 연산자를 하나로 축약
| op= | = |
|---|---|
| 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; |
| i >>= 3; | i = i >> 3; |
| i &= 3; | i = i & 3; |
| i ^= 3; | i = i ^ 3; |
| i |= 3; | i = i | 3; |
| i *= 3 + j; | i = i * (3 + j); |
- 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
- boolean을 제외한 나머지 기본형은 서로 형변환이 가능하다.
int score = (int)85.4;
// => int score = 85;| 변 환 | 수 식 | 결 과 |
|---|---|---|
| int -> char | (char)65 | 'A' |
| char -> int | (int)'A' | 65 |
| float-> int | (int)1.6f | 1 |
| int -> float | (float)10 | 10.0f |
자동 형변환
기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환된다.