[JAVA의 정석] 연산자
연산자 (Operator)
연산자와 피연산자
- 연산자(operator) : 연산을 수행하는 기호(+,-,*./ 등)
- 피연산자(operand) : 연산자의 작업 대상(변수* 상수, 리터럴, 수식)
종류 | 연산자 | 설명 |
---|---|---|
산술 연산자 | + - * / % << >> | 사칙 연산 (+,-,*,/) 과 나머지 연산(%) |
비교 연산자 | > < >= <= == != | 크고 작음과 같고 다름과 같음 |
논리 연산자 | && || ! & | ^ ~ | 그리고(AND) 와 또는 OR 으로 조건을 연결 |
대입 연산자 | = | 우변의 값을 좌변에 저장 |
기타 | (type) ?: instanceof | 형변환 연산자, 삼항 연산자, instanceof연산자 |
####
연산자의 우선순위와 결합규칙
식에 사용된 연산자가 둘 이상인 경우 , 우선순위는 수학의 사칙연산 우선순위와 같다.
만약 x + 3 * y 의 경우에는
3*y 가 먼저 실행되고 그 이후 x + 가 실행된다.
하지만 대입연산자 같은경우에는 반대로 처리된다.
만약 x = y = 3 인 경우
y=3 이후 x=y가 실행된다.
- 산술 > 비교 >논리 > 대입. 대입은 제일 마지막에 수행된다.
- 단항(1) ) 01 (2) ) 삼항 (3) . 단항 연산자의 우선순위가 이항 연산자보다 높다.
- 단항 연산자와 대입 연산자를 제외한 모든 언산의 진행방향은 왼쪽에서 오른쪽이다.
###
산술변환(usual arithmetic conversion)
일반 산술 변환이란? 연산 수행 직전에 발생하는 피연산자의 자동 형변환
- 두 피연산자의 타입을 같게 일치시킨다(보다 큰 타입으로 일치).
- 피연산자의 타입이 int보다 작은 타입이먼 int 로 변환된다.
단항 연산자
증감 연산자 ++ --
증가 연산자(++) 피연산자의 값을 1 증가시킨다.
j = ++i; 값이 참조되기 전에 증가시킨다
감소 연산자(--) 피연산자의 값을 1 감소시킨다.
j = i ++; 값이 참조된 후에 증가시킨다.
부호 연산자 + -
부호 연산자 '-' , '+ ' 는 피연산자의 부호를 반대로 변경한 결과를 반환한다.
xclass OperatorEx4 {
public static void main(String[] args) {
int i = -10;
i = +i;
System.out.println(i);
i = -10;
i = -i;
System.out.println(i);
}
}
//실행결과 - 10 10
사칙연산자
사칙 연산자
덧셈 , 뺄셈, 곱셈, 나눗셈이 있으며 일반적인 수학 수식이다. 하지만 피연산자가 정수형인 경우, 나누는 수로 0을 사용할 수 없다. 만일 0으로 나눈다면 실행 시 에러가 발생할 것이다.
나머지 연산자 %
나머지 연산자는 왼쪽의 피연산자를 오른쪽 피연산자로 나누고 난 나머지 값을 결과로 반환한다.
비교 연산자
대소비교 연산자 < > <= >=
비교연산자 연산결과 > 좌변 값이 크면, true 아니면 false < 좌번 값이 작으면, true 아니면 false >= 좌변 값이 크거나 같으면, true 아니면 false <= 좌변 값이 작거나 같으면, true 아니면 false
등가비교 연산자 == !=
비교연산자 연산결과 == 두 값이 다르면 true, 아니면 false != 두 값이 다르면 true, 아니면 false
논리 연산자
논리 연산자 - &&, || , !
|| (OR 결합) 피연산자 중 어느 한 쪽만 true 이면 true를 결과로 얻는다.
&& (AND 결합) 피연산자 양쪽 모두 true이어야 true의 결과를 얻는다.
논리 부정 연산자 !
이 연산자는 피연산자가 true 이면 false 를, false면 true를 결과로 반환한다.
비트 연산자 & | ^ ~ << >>
- | (OR언산자) 피언산자 중 한 쪽의 01101 .1 을 결과로 얻는다. 그 외에는 을 얻는다.
- & (AND연산자) 띠연산자 앙 쪽이 모두 101 어야만 을 결과로 얻는다. 그 외에는 을 얻는다.
- ^ (XOR연산자) 피언산자의 값이 서로 다를 때만 을 결과로 얻는다. 같을 때는 을 얻는다
비트 전환 연산자 ~
이 연산자는 피연산자를 2진수로 표현했을 때, 0은 1로, 1은 0으로 바꾼다. 논리부정 연산자 ! 와 유사하다.
쉬프트 연산자 << >>
이 연산자는 피 연산자의 각 자리 (2 진수로 표현했을 때)를 ‘오른쪽0))’ 또는 ‘왼쪽(< ()’으로 이동(shift)한다고 해서 ‘쉬프트 연산자(shift operator)’라고 이름 붙여 졌다.
예를 들어 ‘8 <<2’는 왼쪽 피연산자인 10진수 의 진수를 왼쪽으로 자리 이통한다.