Feel It First

[Do it! 자바 프로그래밍 입문] 03 자바의 여러 가지 연산자 본문

IT

[Do it! 자바 프로그래밍 입문] 03 자바의 여러 가지 연산자

csongin 2022. 5. 22. 11:20
728x90
자바의 여러 가지 연산자

자바의 여러 가지 연산자

항과 연산자

 

항(operand)

연산의 사용되는 값

 

연산자(operator)

항을 이용하여 연산하는 기호

 

항의 개수에 따른 연산자 구분

++num // 항이 한 개인 단항 연산자
num1 + num2; // 항이 두 개인 이항 연산자
(5 > 3) ? 1 : 0; // 항이 세 개인 삼항 연산자

대입 연산자

변수에 값을 대입하는 연산자

연산의 결과를 변수에 대입

우선순위가 가장 낮은 연산자

왼쪽 변수(lvalue)에 오른쪽 값(rvalue) 대입

int age = 24; // 나이를 의미하는 age 변수에 24 값을 대입
totalscore = mathScore + engScore; 
// mathScore, engScore 두 개의 변수를 더한 값을 totalScore에 대입

산술 연산자

사칙 연산에 사용되는 연산자

5 + 3 // 두 더항을 더합니다.
5 - 3 // 앞에 있는 항에서 뒤에 있는 항을 뺍니다.
5 * 3 // 두 항을 곱합니다.
5 / 3 // 앞에 있는 항에서 뒤에 있는 항을 나눕니다.
5 % 3 // 앞에 있는 항에서 뒤에 있는 항을 나누어 그 나머지 값을 구합니다.

증가 감소 연산자

단항 연산자

1만큼 더하거나 1만큼 빼는 연산자

항의 앞/뒤의 위치에 따라 연산의 결과가 달라짐에 유의해야 함.

val = ++num; // 먼저 num 값이 1 증가한 후 val 변수에 대입
val = num++; // val 변수에 기존 num 값을 먼저 대입한 후 num 값 1 증가
val = --num; // 먼저 num 값이 1 감소한 후 val 변수에 대입
val = num--; // val 변수에 기존 num 값을 먼저 대입한 후 num 값 1 감소

관계 연산자

이항 연산자

연산의 결과가 true(참), false(거짓)으로 반환됨

num > 3; // 왼쪽 항이 크면 true, 아니면 false 반환
num < 3; // 왼쪽 항이 작으면 true, 아니면 false 반환
num >= 3; // 왼쪽 항이 오른쪽 항보다 크거나 같으면 true, 아니면 false 반환
num <= 3; // 왼쪽 항이 오른쪽 항보다 작거나 같으면 true, 아니면 false 반환
num == 3; // 두 개의 항의 값이 같으면 true, 아니면 false 반환
num != 3; // 두 개의 항의 값이 다르면 true, 아니면 false 반환

논리 연산자

관계 연산자와 혼합하여 많이 사용됨

연산의 결과가 true(참), false(거짓)으로 반환됨

boolean val = (5 > 3) && (5 > 2); // 두 항이 모두 true인 경우에만 결과 값이 true, 그렇지 않은 경우 false
boolean val = (5 > 3) || (5 < 2); // 두 항 중 하나의 항만 참이면 결과 값은 true, 두 항이 모두 거짓이면 false
boolean val = !(5 > 3); // 단항 연산자로 결과 값이 true인 경우 false로 false인 경우 true로 결과 값을 바꿉니다.

 

복합 대입 연산자

대입 연산자와 다른 연산자를 함께 사용함

프로그램에서 자주 사용하는 연산자

num1 += 2; // 두 항의 값을 더해서 왼쪽 항에 대입합니다.
num1 = num1 + 2; // 위의 복합 대입 연산자와 결과 값이 같음.

num1 -= 2; // 왼쪽 항에서 오른쪽 항의 값을 빼서 왼쪽 항에 대입합니다.
num1 = num1 - 2; // 위의 복합 대입 연산자와 결과 값이 같음.

num1 *= 2; // 두 항의 값을 곱해서 왼쪽 항에 대입합니다.
num1 = num1 * 2; // 위의 복합 대입 연산자와 결과 값이 같음.

num1 /= 2; // 왼쪽 항을 오른쪽 항으로 나누어 그 값을 왼쪽 항에 대입합니다.
num1 = num1 / 2; // 위의 복합 대입 연산자와 결과 값이 같음.

num1 %= 2; // 왼쪽 항을 오른쪽 항으로 나누어 그 나머지 값을 왼쪽 항에 대입합니다.
num1 = num1 % 2; // 위의 복합 대입 연산자와 결과 값이 같음.

조건 연산자

삼항 연산자

조건 식의 결과가 true인 경우와 false인 경우에 따라 다른 식이나 결과가 수행됨.

제어문 중 조건문을 간단히 표현할 때 사용할 수 있음.

int num = (5 > 3) ? 10 : 20; // 조건식이 참이면 10을 거짓이면 20을 반환

단락 회로 평가 

논리 곱(&&)은 앞의 항이 false이면 뒤에 항의 결과를 평가하지 않아도 false임

논리 합(||)은 앞의 항이 true이면 뒤에 항의 결과를 평가하지 않아도 true임

int num 10;
int i = 2;

boolean val = ((num1 += 10) < 10) && ((i += 2) < 10); // 논리 곱에서 앞 항의 결과 값이 false이므로 뒤에 문장은 실행되지 않음

System.out.println(val) // false
System.out.println(num1) // 20
System.out.println(i) // 2

val = ((num1 += 10) > 10) || ((i += 2) < 10); // 논리 합에서 앞 항의 결과 값이 true이므로 뒤에 문장은 실행되지 않음

System.out.println(val) // true
System.out.println(num1) // 30
System.out.println(i) // 2

비트 연산자

 

&(AND)연산자

두 비트가 모두 1인 경우만 1 아니면 0

int num1 = 5; //  00000101
imt num2 = 10; // 00001010

int result = num1 & num2; // 00000000
System.out.println(result); // 0

|(OR) 연산자

두 비트가 모두 0인 경우만 0 아니면 1

int num1 = 5; //   00000101
imt num2 = 10; //  00001010

int result = num1 | num2; // 00001111
System.out.println(result); // 15

^(XOR) 연산자

두 비트가 다른 값이면 1, 같은 값이면 0

int num1 = 5; //   00000101
imt num2 = 10; //  00001010

int result = num1 ^ num2; // 00001111

~(반전) 연산자

비트 값을 0은 1로 1은 0으로 바꾸는 연산자

int num = 10; //  00001010

int result = ~num; // 11110101

<<(왼쪽 shift) 

비트를 오른쪽에서 왼쪽으로 이동시키는 연산자

>>(오른쪽 shift) 

비트를 왼쪽에서 오른쪽으로 이동시키는 연산자

<<<,>>>

비트 이동은 동일한데, 남은 공간을 무조건 부호비트가 아닌 0으로 채움

반응형
Comments