Chapter 3. 연산자
연산자 : 연산을 수행하는 기호
피연산자 : 연산자의 연산 수행 대상
>모든 연산자는 연산 결과를 반환한다
y = 4 * x + 3
System.out.println(y);
연산자의 종류
종류 | 연산자 | 설명 |
산술 연산자 | + - * / % << >> | 사칙연산(+-*/)과 나머지연산(%) |
비교 연산자 | > < >= <= == != | 크고 작음과 같고 다름을 비교 |
논리 연산자 | && || ! & | ^ ~ | ‘그리고(and)’와 ‘또는(or)’으로 조건연결 |
대입 연산자 | = | 우변의 값을 좌변에 저장 |
기타 | (type) ?: instanceof | 형변환 연산자, 삼항 연산자, instanceof 연산자 |
연산자의 우선순위는
산술 > 비교 > 논리 > 대입 순서이다
우선순위가 같은 연산자가 있을 때, 기본적으로 왼쪽->오른쪽 순서지만,
대입과 단항 연산자만 오른쪽에서 왼쪽으로 연산한다.
정리하자면
산술(+) > 비교(><) > 논리(&& ||) > 대입
단항(1) > 이항(2) / 삼항(3)
단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향을 왼쪽에서 오른쪽이다 (기본적으로 아는사실)
증감 연산자
증가 연산자(++) 피연산자의 값을 1 증가시킨다.
감소 연산자(--) 피연산자의 값을 1 감소시킨다.
타입 | 설명 | 사용예 |
전위형 | 값이 참조되기 전에 증가시킨다 | j = ++i; |
후위형 | 값이 참조된 후에 증가시킨다 | j = i++; |
산술변환
“연산전에 피연산자의 타입을 일치시키는 것”
**중요규칙**
두 피연산자의 타입을 같게 일치시킨다. (보다 큰 타입으로 일치)
long + int > long + long
float + int > float float
double + float > double double
피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.
byte + short > int int
char + short > int int // byte –128~127 char 0~6만 short +-3만
반올림 Math.round()
실수를 소수점 첫 째자리에서 반올림 한 정수를 반환
long result = Math.round(4.52); //result에 5가 저장
나머지 연산자 %
오른쪽 피연산자로 나누고 남은 나머지를 반환
나누는 피연산자는 0이 아닌 정수만 허용(부호는 무시됨)
system.out.println(10 % 8);
system.out.println(10 % -8); //부호무시
비교연산자 > < >= <= == !=
부등호 – 등호순서 결과값은 true or false
비교연산자 | 연산결과 |
> | 좌변 값이 크면, true 아니면 false |
< | 좌변 값이 작으면, true 아니면 false |
>= | 좌변 값이 크거나 같으면 true |
<= | 좌변값이 작거나 같으면 true |
== | 두 값이 같으면 true, 아니면 false |
!= | 두 값이 다르면 true, 아니면 false |
**문자열 비교에는 == 대신 equals()를 사용해야 한다
논리 연산자 && ||
조건식을 연결할 때 쓰는 연산자
|| (OR결합) //피연산자 중 어느 한쪽이 true이면 true를 결과로 얻는다
&& (AND결합) 피연산자 양쪽모두 true여야 true를 결과로 얻는다
논리 부정 연산자 !
true를 false로 false 는 true로 바꾼다. // x !x
조건 연산자 ? :
조건식의 결과에 따라 연산결과를 달리한다
조건식 ? 식1 : 식2
if문을 간단히 쓸 수 있게 고안됐다
대입연산자
오른쪽 피연산자를 왼쪽 피연산자에 저장 후 저장된 값을 반환
System.out.println(x = 3); //변수에 3이 저장되고 연산결과인 3이 출력
대입 연산자와 다른 연산자를 하나로 축약
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; | i = i | 3; |
i *= 10 + j; | i = i * (10 + j); |
첫번째와 마지막 패턴만 숙지하면 된다. (괄호의 중요성)