JAVA/JAVA 개념
JAVA 개념 2-3 - 연산자
kms152000
2022. 11. 14. 16:16
연산자
: 프로그램에서 변수의 값들을 계산하기 위해 사용합니다. 사칙연산, 대입 연산, 비트 연산, 논리 연산, 관계 연산 등이 있습니다.
1) 사칙연산(Arithmetic operators)
: 숫자 데이터를 이용해 기본적인 수학연산을 수행합니다.
사칙연산자 | 사용 예 | 의미 | 결과 |
+ | 5 + 3 | 덧셈 연산 | 8 |
- | 5 - 3 | 뺄셈 연산 | 2 |
* | 5 * 3 | 곱셈 연산 | 15 |
/ | 5 / 3 | 나누기 연산 | 1 |
% | 5 % 3 | 나머지 연산 | 2 |
2) 대입 연산(Assignment operators)
: 변수에 값을 대입하기 위한 연산자로 축약형과 단항 연산자 등이 포함돼 있습니다.
대입 연산자 | 사용 예 | 의미 | 결과 |
= | speed = 50; | 변수 speed에 50의 값을 할당 | 50 |
+= | speed += 5; | speed = speed + 5; 와 같음 | 55 |
-= | speed -= 5; | speed = speed - 5; 와 같음 | 50 |
*= | speed *= 5; | speed = speed * 5; 와 같음 | 250 |
/= | speed /= 5; | speed = speed / 5; 와 같음 | 50 |
%= | speed %= 5 | speed = speed % 5; 와 같음 | 0 |
++ | speed ++; | speed = speed + 5; 와 같음 | 5 |
-- | speed --; | speed = speed - 5; 와 같음 | 0 |
더보기

증감연산자 : ++, --와 같은 단항 연산자는 변수명 앞 혹은 뒤에 사용할 수 있습니다. 앞에 사용하는 경우 값을 먼저 증/감한 후 변수에 대입하며 뒤에 사용하는 경우 현재 변수 값을 사용한 다음 증/감한 값을 대입하게 됩니다.

사칙연산과 대입연산 종합 예제
public class Operator1 {
public static void main(String[] args) {
int num1 = 30;
int num2 = 14;
int result1 = num1 * num2;
int result2 = num1 % num2;
System.out.printf("result1 : %d \n", result1);
System.out.printf("result2 : %d \n", result2);
System.out.println("-------------------");
num1++;
num2 *= 2;
System.out.printf("num1++ : %d \n", num1);
System.out.printf("num2 *= 2 : %d \n", num2);
System.out.println("-------------------");
System.out.printf("num1++ : %d \n", num1++);
System.out.printf("--num1 : %d \n", --num1);
}
}
실행결과
result1 : 420
result2 : 2
-------------------
num1++ : 31
num2 *= 2 : 28
-------------------
num1++ : 31
--num1 : 31
3) 비트연산자(Bitwise operators)
: 일반적으로 사용하는 10진수 혹은 문자에 대한 연산이 아닌 비트단위의 연산에 사용되는 연산자입니다.
비트 연산자 | 의미 | 사용 예 | 결과 |
& | 비트 AND 연산 | a & b | a(40): 0010 1000, b(122): 0111 1010, r: 0010 1000 |
| | 비트 OR 연산 | a | b | a: 0010 1000, b: 0111 1010, r: 0111 1010 |
^ | 비트 XOR 연산 | a ^ b | a: 0010 1000, b: 0111 1010, r: 0101 0010 |
~ | 비트 inverse(역)연산, 0 -> 1, 1 -> 0 |
a - b | a: 0010 1000, r: 1101 0111 |
>> | 비트를 우측으로 이동(shift), 2로 나누는 효과 |
a >> 2 | a: 0010 1000, r: 0000 1010 |
<< | 비트를 좌측으로 이동(shift), 2를 곱하는 효과 |
a << 2 | a: 0010 1000, r: 1010 0000 |
- 비트 시프트시 빈자리는 기본적으로 0으로 채웁니다.
- 단, >> 연산시 최상위 비트가 1인(음수를 의미) 경우 빈자리는 1로 채워집니다.
- 부호가 없는 데이터 연산의 경우 >>>을 사용해 빈자리를 무조건 0으로 채웁니다.
- XOR 연산은 같으면 false(0) 다르면 true(1)입니다.
비트 쉬프트 연산과 XOR 연산 예제
public class Operator2 {
public static void main(String[] args) {
int num1 = 50;
System.out.printf("정수값 num1 : %d, %s\n", num1, Integer.toBinaryString(num1));
int result1 = num1 >> 1;
System.out.printf("num1 >> 1 : %d, %s\n", result1, Integer.toBinaryString(result1));
int result2 = num1 << 1;
System.out.printf("num1 << 1 : %d, %s\n", result2, Integer.toBinaryString(result2));
System.out.println("------------------");
int pwd = 123456;
int encPwd, decPwd;
int key = 0x1A253B65;
System.out.println("암호화 전 비밀번호 : "+pwd);
encPwd = pwd ^ key;
System.out.println("암호화 후 비밀번호 : "+encPwd);
decPwd = encPwd ^ key;
System.out.println("복호화 후 비밀번호 : "+decPwd);
}
}
실행 결과
정수값 num1 : 50, 110010
num1 >> 2 : 25, 11001
num1 << 2 : 100, 1100100
------------------
암호화 전 비밀번호 : 123456
암호화 후 비밀번호 : 438622501
복호화 후 비밀번호 : 123456
논리 연산자(Logical operators)
: true 혹은 false를 반환하는 연산자로 여러 조건을 만족하는지 체크하기 위한 용도로 if문 등에서 사용됩니다.
논리 연산자 | 의미 | 사용 예 | 결과 |
&& | AND 연산, 양쪽이 모두 참인 경우에만 true 리턴을 합니다. | A && B | false |
|| | OR 연산, 양쪽중 한쪽만 참이어도 true 리턴을 합니다. | A || B | true |
! | 단항연산으로 NOT 연산 | !A | false |
관계 연산자(Relational operators)
: 왼쪽과 오른쪽의 피연산자를 비교한 결과를 true, false로 리턴하는 연산자입니다. 보통 if, while문 등에서 수행조건을 체크하기 위해 사용합니다.
관계 연산자 | 의미 |
> | 크다 |
>= | 같거나 크다 |
< | 작다 |
<= | 같거나 작다 |
== | 같다 |
!= | 같지 않다 |