Java 연산자
연산자 (Operator) 정의
- 프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산(operation)이라 한다.
- 연산에 사용되는 표시나 기호를 연산자(operator)라고 한다.
- 연산되는 데이터는 피연산자(operand)라고 한다.
예) 산술연산 +, -, *, /, %
연산자의 종류
종류 | 연산자 | 우선순위 |
증감 연산자 | ++, -- | 1순위 |
산술 연산자 | +, -, *, /, % | 2순위 |
시프트 연산자 | >>, <<, >>> | 3순위 |
비교 연산자 | >, <, >=, <=, ==, != | 4순위 |
비트 연산자 | &, |, ^, ~ | ~만 1순위, 나머지는 5순위 |
논리 연산자 | &&, ||, ! | !만 1순위, 나머지는 6순위 |
조건(삼항) 연산자 | ?, : | 7순위 |
대입 연산자 | =, *=, /=, %=, +=, -= | 8순위 |
증감연산자
피연산자의 값을 1증가 또는 감소시키는 연산자를 말한다. 증감연산자의 위치에 따라 결과값이 달라진다.
구분 | 연산자 | 설명 |
증감연산자 | x++ | 연산수행후 피연산자의 값을 1증가 시킴 |
++x | 값을 1증가 시킨후 해당연산 수행 | |
x-- | 연산수행후 피연산자의 값을 1감소 시킴 | |
--x | 값을 1감소 시킨후 해당연산 수행 |
증감 연산자 예제
int x = 5; int y = x++; |
피연산자 뒤에 ++, -- 증감연산자가 x를 더한 값그대로 나오는 게 아니라 나중에 계산이 되기 때문에
값은 x와 똑같이 나온다.
산술 연산자
기본이 되는 연산자로 4칙 연산과 나머지 연산자(%)가 있다
구분 | 연산자 | 설명 |
산술 연산자 | + | 두 수에 대한 덧셈 |
- | 두 수에 대한 뺄셈 | |
* | 두 수에 대한 곱셈 | |
/ | 두 수에 대한 나눗셈 | |
% | 두 수를 나눈 후 그 나머지를 반환한다. |
산술 연산자 예제
int x = 10; int y = 5; System.out.println(x + y); System.out.println(x - y); System.out.println(x * y); System.out.println(x / y); System.out.println(x % y); |
결과값을 출력하면 +한값은 15, - 한값은 5, *한값은 50, /한값은 2, %몫은 0
나머지는 사칙연산과 같지만 자바에서 % 연산자는 두 숫자를 나눈값의 나머지를 출력하기 때문에 10에서 5를 나눈 나머지의 값은 없기 때문에 0으로 출력이된다.
시프트(shift) 연산자
시프트 연산자는 bit단위의 연산처리 하며 자료의 가공을 위해 오른쪽 또는 왼쪽으로 이동하여 값에 대한 변화를 주는 연산자입니다.
구분 | 연산자 | 설명 |
시프트 연산자 | >> | bit값을 오른쪽으로 이동(빈 자리는 부호값을 대입) |
<< | bit값을 왼쪽으로 이동(빈자리는 0으로 대입) | |
>>> | bit값을 오른쪽으로 이동 (빈 자리는 0으로 대입) |
시프트 연산자 예제
int num1 = 3; int num2 = 24; System.out.println(num1 << 3); // System.out.println(num1 >> 2); System.out.println(num1 >>> num2); |
num1의 비트 연산자가 0000 0011이 였던 것이 <<로 3번이동 하게 되고 비트가 0001 1000으로 바껴서 24가 되었다.
시프트 연산은 변수 << 이동할 비트수 또는 변수 >> 이동할 비트수 형식으로 사용이 된다
비교 연산자
변수나 상수의 값을 비교하기 위한 연산자로 결과가 항상 true이거나 false의 값으로 되돌려준다.
구분 | 연산자 | 설명 |
비교연산자 | > | 크다(초과) |
< | 작다(미만) | |
>= | 크거나 같다(이상) | |
<= | 작거나 같다(이하) | |
== | 피연산자들의 값이 같다 | |
!= | 피연산자들의 값이 같지 않다(부정문) |
비교 연산자 예제
int x = 3;
int y = 4;
boolean Proposition = x == y;
System.out.println(Proposition);
==연산자를 사용하여 x와 y를 비교한값을 논리자료형으로 변수를 선언한후 값을 대입해 출력을 하면 3과 4는 값이 같지 않기 때문에 false가 나온다.
논리 연산자
논리 연산자는 피연산자의 값이 true나 false인 논리값을 조건 연산자를 통해 true나 false값을 연산해 나타낸다.
구분 | 연산자 | 의미 | 설명 |
논리 연산자 | & | and (논리곱) | 모두 true일때만 true를 나타낸다. |
| | or (논리합) | 하나라도 true이면 true를 나타낸다. | |
! | not (부정) | true일때는 false로, false일때는 true로 나타낸다 | |
연산자 | 설명 | ||
&& | 선조건이 false 이면 후조건을 실행하지 않는다. | ||
|| | 선조건이 false 일때만 후조건을 실행한다. |
논리 연산자 예제
int x = 3; int y = 4; boolean Proposition = x < y || x > y; System.out.println(Proposition); |
x < y의 값은 y는 x 를 초과하기 때문에 true,
x > y의 값은 x는 y를 초과하지 못하기 때문에 false이지만
선조건에서 true이기 때문에 후조건을 실행하지 않고 그대로 true를 출력하게 된다
대입 연산자
특정 상수 값이나 변수 값 또는 객체를 변수에 전달해 기억시킬때 사용한다.
구분 | 연산자 | 설명 |
대입 연산자 | = | 오른쪽 변수에 왼쪽 변수를 대입한다. |
+= | 왼쪽 변수에 더하면서 대입한다 | |
-= | 왼쪽 변수값을 빼면서 대입한다. | |
*= | 왼쪽 변수에 값을 곱하면서 대입한다. | |
/= | 왼쪽 변수에 값을 나누면서 대입한다. | |
%= | 왼쪽 변수에 나머지의 값을 구하면서 대입한다. |
대입 연산자 예제
int num= 3;
num += 3;
System.out.println(num);
num -= 3;
System.out.println(num);
num *= 3;
System.out.println(num);
num /= 3;
System.out.println(num);
num %= 3;
System.out.println(num);
이 식을 풀어쓰면 num += 3;은 num = num + 3;이라는 말과 같기때문에 기존 num의 값에 3을더한값을 다시 num에 대입하고 싶을 때 번거러움을 줄이기 위해 줄여서 복합 대입연산자를 이용해 작성을 한다.
비트 연산자
피연산자 즉 연산의 대상이 되는 값들을 내부적으로 bit단위로 변경후 연산을 수행하는 연산자이다.
구분 | 연산자 | 설명 |
& | 비트 단위의 AND | |
| | 비트 단위의 OR | |
^ | XOR (배타적 OR) | |
~ | 단항 연산자, 비트를 반전해 0은 1로 1은 0으로 만든다. |
X | Y | X | Y | X & Y | X ^ Y |
0 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 | 0 |
비트 연산자 예제
int num1 = 1; int num2 = 3; System.out.println(num1 & num2); System.out.println(num1 | num2); System.out.println(num1 ^ num2); |
num1은 0000 0001이고, num2는 0000 0011이여서 연산을 하면 둘다 1이 나올때 true(1)을 반환하기 때문에 그대로
0000 0001을 나타내서 1이 출력이 되게 된다.
| AND는 반대로 3이 출력이된다.
~는 0과 1이 반대로 출력이 되서 값은 먼저 AND로 연산이된값에서 반대로 바꾼값이 출력이된다.
삼항 연산자
삼항 연산자는 if문을 대신해서 사용할 수 있는 식이다.
int num1 = 10;
int num2 = 5;
라고 가정 했을 때
a가 b보다 크면 a - b
a가 b보다 작으면 b - a
의 값을 출력해준다고 했을 때 쉽게 작성할수 있게 해주는 연산자이다.
식은
int result = a > b ? a - b : b-a;
출력을 하면
System.out.println(result);
앞에 a>b는 a가 b보다 큰 것을 조건식으로 하고
? 삼항연산자를 통해
a가 b보다 더 큰것이 true이면 a-b를 출력
a가 b보다 더 큰것이 false이면 b-a를 출력
뒤에는 true : false이다.
true인지 false인지 판단해서 값을 출력하는 것이 삼항연산자이다.