이것이 자바다 - Chapter 3

윤여준·2022년 5월 7일
0
post-thumbnail

연산자와 연산식

프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산(operations)이라고 한다. 연산에 사용되는 표시나 기호를 연산자(operator)라고 하고, 연산되는 데이터는 피연산자(operand)라고 한다. 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것을 연산식(expressions)이라고 부른다.

연산의 방향과 우선순위

연산의 방향과 우선순위를 정리하면 다음과 같다.

  1. 단항, 이항, 삼항 연산자 순으로 우선순위를 가진다.
  2. 산술, 비교, 논리, 대입 연산자 순으로 우선순위를 가진다.
  3. 단항과 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽이다.
  4. 복잡한 연산식에는 괄호를 사용해서 우선순위를 정해준다.

단항 연산자

단항 연산자는 피연산자가 단 하나뿐인 연산자를 말하며, 여기에는 부호 연산자, 증감 연산자, 논리 부정 연산자, 비트 반전 연산자가 있다.

부호 연산자(+,-)

부호 연산자는 양수 및 음수를 표시하는 +,-를 말한다. boolean 타입과 char 타입을 제외한 나머지 기본 타입에 사용할 수 있다.

연산자설명
+피연산자의 부호 유지
-피연산자의 부호 변경

증감 연산자(++,--)

증감 연산자는 변수의 값을 1 증가시키거나 1 감소시키는 연산자를 말한다. boolean 타입을 제외한 모든 기본 타입의 피연산자에 사용할 수 있다.

연산자설명
++피연산자다른 연산을 수행하기 전에 피연산자의 값을 1 증가시킴
--피연산자다른 연산을 수행하기 전에 피연산자의 값을 1 감소시킴
피연산자++다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴
피연산자--다른 연산을 수행한 후에 피연산자의 값을 1 감소시킴

++ii = i + 1의 연산 속도는 동일하다. 왜냐하면 두 코드를 통해 생성되는 바이트 코드는 동일하기 때문이다.

논리 부정 연산자(!)

논리 부정 연산자는 true를 false로, false를 true로 변경하기 때문에 boolean 타입에만 사용할 수 있다.

연산자설명
!피연산자가 true이면 false 값을 산출
피연산자가 false이면 true 값을 산출

비트 반전 연산자(~)

비트 반전 연산자정수 타입(byte, short, int, long)의 피연산자에만 사용되며, 피연산자를 2진수로 표현했을 때 비트값인 0을 1로, 1은 0으로 반전한다. 연산 후, 부호 비트인 최상위 비트를 포함해서 모든 비트가 반전되기 때문에, 부호가 반대인 새로운 값이 산출된다.

연산자설명
~피연산자를 2진수로 표현했을 때, 0을 1로, 1은 0으로 반전시킴

이항 연산자

이항 연산자는 피연산자가 두 개인 연산자를 말하며 여기에는 산술 연산자, 문자열 연결 연산자, 대입 연산자, 비교 연산자, 논리 연산자, 비트 논리 연산자, 비트 이동 연산자 등이 있다.

산술 연산자(+,-,*,/,%)

산술 연산자는 더하기, 빼기, 곱하기, 나누기, 나머지를 구하는 연산으로 총 5개이다. 산술 연산자는 boolean 타입을 제외한 모든 기본 타입에 사용할 수 있다.

연산자설명
+덧셈 연산
-뺄셈 연산
*곱셈 연산
/좌측 피연산자를 우측 피연산자로 나눗셈 연산
%좌측 피연산자를 우측 피연산자로 나눈 나머지를 구하는 연산

문자열 연결 연산자(+)

문자열 연산자+는 문자열을 서로 결합하는 연산자이다.

피연산자 중 한쪽이 문자열이면 + 연산자는 문자열 연결 연산자로 사용되어 다른 피연산자를 문자열로 변환하고 서로 결합한다.

문자열과 숫자가 혼합된 + 연산식은 왼쪽에서부터 오른쪽으로 연산이 진행된다.

연산자설명
+왼쪽 피연산자와 오른쪽 피연산자 중 어느 하나라도 문자열이면 두 피연산자를 문자열로 결합함

비교 연산자(<,<=,>,>=,==,!=)

비교 연산자대소 또는 동등을 비교해서 boolean 타입인 true/false를 산출한다.

대소 연산자는 boolean 타입을 제외한 기본 타입에 사용할 수 있고, 동등 연산자는 모든 타입에 사용될 수 있다.

String 타입의 문자열을 비교할 때에는 대소 연산자를 사용할 수 없고, 동등 비교 연산자는 사용할 수 있으나 문자열이 같은지, 다른지를 비교하는 용도로는 사용할 수 없다. 문자열의 값이 동일한지를 비교하려면 equals() 메소드를 사용해야 한다.

동등비교

연산자설명
==두 피연산자의 값이 같은지를 검사
!=두 피연산자의 값이 다른지를 검사

크기 비교

연산자설명
>왼쪽 피연산자가 큰지를 검사
>=왼쪽 피연산자가 크거나 같은지를 검사
<왼쪽 피연산자가 작은지를 검사
<=왼쪽 피연산자가 작거나 같은지를 검사

논리 연산자(&&,||,&,|,^,!)

논리 연산자논리곱, 논리합, 배타적 논리합 그리고 논리 부정 연산을 수행한다. 논리 연산자의 피연산자는 boolean 타입만 사용할 수 있다.

구분연산자설명
AND(논리곱)&& 또는 &피연산자 모두가 true일 경우에만 연산 결과는 true
OR(논리합)|| 또는 |피연산자 중 하나만 true이면 연산 결과는 true
XOR(배타적논리합)^피연산자가 하나는 true이고 다른 하나가 false일 경우에만 연산 결과는 true
NOT(논리부정)!피연산자의 논리값을 바꿈

비트 연산자(&,|,^,~,<<,>>,>>>)

비트 연산자는 데이터를 비트 단위로 연산한다. 즉 0과 1이 피연산자가 된다. 그렇기 때문에 0과 1로 표현이 가능한 정수 타입만 비트 연산을 할 수 있다.

비트 연산자는 기능에 따라 비트 논리 연산자와 비트 이동 연산자로 구분한다.

비트 논리 연산자(&,|,^)

구분연산자설명
AND(논리곱)&두 비트 모두 1일 경우에만 연산 결과가 1
OR(논리합)|두 비트 중 하나만 1이면 연산 결과는 1
XOR(배타적 논리합)^두 비트 중 하나는 1이고 다른 하나가 0일 경우 연산 결과는 1
NOT(논리 부정)~보수

비트 이동 연산자(<<,>>,>>>)

비트 이동 연산자는 정수 데이터의 비트를 좌측 또는 우측으로 밀어서 이동시키는 연산을 수행한다.

연산자설명
a<<b정수 a의 각 비트를 b만큼 왼쪽으로 이동(빈자리는 0으로 채워진다.)
a>>b정수 a의 각 비트를 b만큼 오른쪽으로 이동(빈자리는 정수 a의 최상위 부호 비트와 같은 값으로 채워진다.)
a>>>b정수 a의 각 비트를 b만큼 오른쪽으로 이동(빈자리는 0으로 채워진다.)

대입 연산자(=,+=,-=,*=,/=,%=,^=,|=,<<=,>>=,>>>=)

대입 연산자는 오른쪽 피연산자의 값을 좌측 피연산자인 변수에 저장한다.

단순히 오른쪽 피연산자의 값을 변수에 저장하는 단순 대입 연산자가 있고, 정해진 연산을 수행한 후 결과를 변수에 저장하는 복합 대입 연산자도 있다.

단순 대입 연산자

연산자설명
=우측의 피연산자의 값을 변수에 저장

복합 대입 연산자

연산자설명
+=우측의 피연산자의 값을 변수의 값과 더한 후에 다시 변수에 저장 (변수 = 변수 + 피연산자와 동일)
-=우측의 피연산자의 값을 변수의 값과 뺀 후에 다시 변수에 저장 (변수 = 변수 - 피연산자와 동일)
*=우측의 피연산자의 값을 변수의 값과 곱한 후에 다시 변수에 저장 (변수 = 변수 * 피연산자와 동일)
/=우측의 피연산자의 값으로 변수의 값을 나눈 후에 다시 변수에 저장 (변수 = 변수 / 피연산자와 동일)
%=우측의 피연산자의 값으로 변수의 값을 나눈 후에 나머지를 변수에 저장 (변수 = 변수 % 피연산자와 동일)
&=우측의 피연산자의 값과 변수의 값을 & 연산 후 결과를 변수에 저장 (변수 = 변수 & 피연산자와 동일)
|=우측의 피연산자의 값과 변수의 값을 | 연산 후 결과를 변수에 저장 (변수 = 변수 | 피연산자와 동일)
^=우측의 피연산자의 값과 변수의 값을 ^ 연산 후 결과를 변수에 저장 (변수 = 변수 ^ 피연산자와 동일)
<<=우측의 피연산자의 값과 변수의 값을 << 연산 후 결과를 변수에 저장 (변수 = 변수 << 피연산자와 동일)
>>=우측 피연산자의 값과 변수의 값을 >> 연산 후 결과를 변수에 저장 (변수 = 변수 >> 피연산자와 동일)
>>>=우측의 피연산자의 값과 변수의 값을 >>> 연산 후 결과를 변수에 저장 (변수 = 변수 >>> 피연산자와 동일)

삼항 연산자

삼항 연산자(?:)는 세 개의 피연산자를 필요로 하는 연산자를 말한다. 삼항 연산자는 ? 앞의 조건식에 따라 콜론(:) 앞뒤의 피연산자가 선택된다고 해서 조건 연산식이라고 부르기도 한다.

조건식 ? 값 또는 연산식 : 값 또는 연산식

조건식을 연산하여 true가 나오면 삼항 연산자의 결과는 콜론 앞의 피연산자가 된다. 반면에 조건식을 연산하여 false가 나오면 삼항 연산자의 결과는 콜론 뒤의 피연산자가 된다.

profile
Junior Backend Engineer

0개의 댓글