2.1 증감 연산자 ++ --
상수의 값은 변경할 수 없다.
증가 연산자(++) 피연산자의 값을 1 증가시킨다. 감소 연산자(--) 피연산자의 값을 1 감소시킨다. |
피연산자의 왼쪽에 위치하면 '전위형', 오른쪽에 위치하면 '후위형'이라고 함
전위형은 값이 참조되기 전에 증가시킨다.
후위형은 값이 참조된 후에 증가시킨다.
식에 두 번 이상 포함된 변수에 증감연산자를 사용하는 것은 피해야 한다.
2.2 부호 연산자 + -
'-'는 피연산자의 부호를 반대로 변경한 결과를 반환함
부호 연산자는 boolean형과 char형을 제외한 기본형에만 사용할 수 있다.
3.1 사칙 연산자 + - * /
피연산자가 정수형인 경우, 나누는 수로 0을 사용할 수 없다.
3.2 나머지 연산자 %
주로 짝수, 홀수 또는 배수 검사 등에 사용됨.
4.1 대소 비교 연산자 < > <= >=
기본형 중에서는 boolean형을 제외한 나머지 자료형에 다 사용할 수 있지만 참조형에는 사용할 수 없다.
4.2 등가비교 연산자 == !=
기본형은 물론 참조형, 즉 모든 자료형에 사용할 수 있다.
문자열의 비교
두 문자열을 비교할 때는, 비교 연산자 '=='대신 equals() 메서드를 사용해야 함.
비교 연산자는 두 문자열이 완전히 같은 것인지 비교할 뿐이므로, 문자열의 내용이 같은지 비교하기 위해서는 equals()를 사용한다.
대소문자를 구별하지 않고 비교하고 싶으면, equalsIgnoreCase()를 사용하면 됨.
5.1 논리 연산자 - &&, ||, !
논리 연산자는 피연산자로 boolean형 또는 boolean형 값을 결과로 하는 조건식만을 혀용한다.
|| (OR결합) 피연산자 중 어느 한 쪽만 true이면 true를 결과로 얻는다. && (AND결합) 피연산자 양쪽 모두 true이어야 true를 결과로 얻는다. |
효율적인 연산(short circuit evaluation)
OR연산의 경우, 좌측 피연산자가 'true'이면, 우측 피연산자의 값은 평가하지 않는다.
AND연산의 경우, 좌측 피연산자가 'false'이면 우측 피연산자는 평가하지 않는다.
논리 부정 연산자 !
true와 false를 반대로 바꾸는 연산자
주로 조건문과 반복문의 조건식에서 쓰임
5.2 비트 연산자 & | ^ ~ << >>
비트 연산자는 피연산자를 비트단위로 논리 연산한다.
피연산자로 실수는 허용하지 않는다. 정수(문자 포함)만 허용된다.
| (OR연산자) 피연산자 중 한 쪽이 값이 1이면, 1을 결과로 얻는다. 그 외에는 0을 얻는다. & (AND연산자) 피연산자 양 쪽이 모두 1이어야만 1을 결과로 얻는다. 그 외에는 0을 얻는다. ^ (XOR연산자) 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다. 같을 때는 0을 얻는다. |
비트OR연산자는 주로 특정 비트의 값을 변경할 때 사용한다.
비트AND연산자는 주로 특정 비트의 값을 뽑아낼 때 사용한다.
비트XOR연산자는 주로 간단한 암호화에 사용된다.
비트 전환 연산자 ~
피연산자를 2진수로 표현했을 때, 0은 1로, 1은 0으로 바꾼다. 논리부정 연산자'!'와 유사하다.
비트 전환 연산자에 의해 '비트 전환'되고 나면, 부호있는 타입의 피연산자는 부호가 반대로 변경된다. 즉, 피연산자의 '1의 보수'를 얻을 수 있는 것이다. 그래서 비트 전환 연산자를 '1의 보수'연산자라고도 한다.
쉬프트 연산자 << >>
피연산자의 각 자리(2진수로 표현했을 때)를 '오른쪽(>>)' 또는 '왼쪽(<<)'으로 이동한다고 해서 '쉬프트 연산자'라고 이름 붙여졌다.
자리이동으로 저장범위를 벗어난 값들은 버려지고 빈자리는 0으로 채워진다.
'<<'연산자의 경우, 피연산자의 부호에 상관없이 각 자리를 왼쪽으로 이동시키며 빈칸을 0으로 채우면 되지만, '>>'연산자는 오른쪽으로 이동시키기 때문에 부호없는 정수는 부호를 유지하기 위해 왼쪽 피연산자가 음수인 경우 빈자리를 1로 채운다.
쉬프트 연산자의 좌측 피연산자는 산술변환이 적용되어 int보다 작은 타입은 int타입으로 자동 변환되고 연산결과 역시 int타입이 된다. 그러나 쉬프트 연산자는 다른 이항연산자들과 달리 피연산자의 타입을 일치시킬 필요가 없기 때문에 우측 피연산자에는 산술변환이 적용되지 않는다.
x << n은 x * 2^n의 결과와 같다. x >> n은 x / 2^n의 결과와 같다. |
쉬프트 연산자를 사용하면 프로그램의 실행속도가 더 빠르다.
6.1 조건 연산자 ? :
삼항 연산자는 조건 연산자 하나뿐이다.
조건식 ? 식1: 식2 |
평가결과가 true이면 식1, false이면 식2가 연산결과가 된다.
가독성을 높이기 위해 조건식을 괄호()로 둘러싸는 경우가 많다.
조건 연산자의 식1과 식2, 이 두 피연산자의 타입이 다른 경우, 이항 연산자처럼 산술 변환이 발생한다.
6.2 대입 연산자 = op=
변수와 같은 저장공간에 값 또는 수식의 연산결과를 저장하는데 사용된다.
오른쪽 피연산자의 값(식이라면 평가값)을 왼쪽 피연산자에 저장한다.
lvalue와 rvalue
대입 연산자의 왼쪽 피연산자를 'lvalue(left value)'이라 하고, 오른쪽 피연산자를 'rvalue(right value)'라고 한다.
rvalue는 변수뿐만 아니라 식이나 상수등이 모두 가능함
lvalue는 반드시 변수처럼 값을 변경할 수 있는 것이어야 한다.
복합 대입 연산자
대입 연산자는 다른 연산자(op)와 결합하여 'op='와 같은 방식으로 사용될 수 있다.
결합된 두 연산자는 반드시 공백없이 붙여 써야 한다.
예) += -= *= /=
'오늘의 공부 > Java의 정석' 카테고리의 다른 글
05-1.1(배열(array)이란?)~3.4(다차원 배열의 활용) (0) | 2022.07.13 |
---|---|
04-1.1(if문)~2.6(이름 붙은 반복문) (0) | 2022.07.12 |
03-1.1(연산자(operator))~1.5(산술 변환(usual arithmetic conversion)) (0) | 2022.07.11 |
02-5.1(형변환(캐스팅, casting)이란?)~5.6(자동 형변환) (0) | 2022.07.11 |
02-4.1(논리형-boolean)~4.4(실수형-float, double) (0) | 2022.07.11 |