본문 바로가기
Programming/Java

연산자(Operators)

by Tarake 2024. 8. 1.

연산자(Operators)


산술 연산자


연산자 연산자의 기능
= 연산자 오른쪽에 있는 값을 왼쪽에 있는 변수에 대입
+ 피연산자의 값을 더함
- 왼쪽 피연산자 값에 오른쪽 피연산자 값을 뺌
* 피연산자의 값을 곱함
/ 왼쪽 피연산자 값을 오른쪽 피연산자의 값으로 나눔
% 왼쪽 피연산자 값을 오른쪽 피연산자 값으로 나누고 남은 나머지

 

 

복합(Compound) 대입 연산자


연산자 연산자의 기능
+= 연산자 왼쪽에 연산자 오른쪽 값을 더함
-= 연산자 왼쪽에 연산자 오른쪽 값을 뺌
*= 연산자 왼쪽에 연산자 오른쪽 값을 곱함
/= 연산자 왼쪽에 연산자 오른쪽 값을 나눔
%= 연산자 왼쪽에 연산자 오른쪽 값을 나눈 나머지

 

관계 연산자


연산자 연산자의 기능
< 연산자 왼쪽이 연산자 오른쪽보다 작은가?
> 연산자 왼쪽이 연산자 오른쪽보다 큰가?
<= 연산자 왼쪽이 연산자 오른쪽보다 작거나 같은가?
>= 연산자 왼쪽이 연산자 오른쪽보다 크거나 같은가?
== 연산자 왼쪽이 연산자 오른쪽과 같은가?
!= 연산자 왼쪽이 연산자 오른쪽과 다른가?

 

 

논리 연산자


연산자 연산자의 기능
&& (AND) 연산자 왼쪽 오른쪽 모두 같으면 true 아니면 false
|| (OR) 연산자 왼쪽 오른쪽 중 하나라도 같으면 true 아니면 false
! (NOT) true이면 false 이고 false이면 true

 

 

SCE(Short-Circuit Evaluation)


연산의 효율과 속도를 높이기 위해서 불필요한 연산을 생략하는 기능입니다.

 

int num1 = 0;
int num2 = 0;
boolean b;

b = (num1 += 1) < 0 && (num2 += 1) > 0;    // num1 = 1, num2 = 0
b = (num1 += 1) > 0 || (num2 += 1) > 0;    // num1 = 2, num2 = 0

보통 사람들은 결과가 nu1과 num2가 1씩 두 번 증가해서 각각 2로 출력될 것이라고 생각합니다. 하지만 출력해보면 num1이 각각 1, 2 이런식으로 출력되고 num2는 0, 0 으로 나옵니다.

이유는 &&의 경우 첫 번째 num1이 1이므로 0보다 작다가 거짓이 되어 이후 연산이 필요가 없어지게 됩니다. 그래서 num2의 연산을 생략합니다. 그리고 || 또한 num1이 0보다 크므로 참이 되어 num2가 연산이 어떻게 되든 상관이 true가 되므로 num2의 연산을 생략하게 됩니다.

 

증감 연산자


연산자 연산자의 기능
++var 다음 문장으로 넘어가기 전에 피연산자의 저장된 값을 1증가
--var 다음 문장으로 넘어가기 전에 피연산자의 저장된 값을 1감소
var++ 다음 문장으로 넘어간 후에 피연산자의 저장된 값을 1증가
var-- 다음 문장으로 넘어간 후에 피연산자의 저장된 값을 1감소

 

 

비트 연산자


연산자 연산자의 기능
& 비트 단위로 AND 연산
| 비트 단위로 OR 연산
^ 비트 단위로 XOR 연산
~ 모든 비트를 반전

 

 

비트 쉬프트


연산자 연산자의 기능
<< 비트 열을 왼쪽으로 이동 후 빈 공간은 0으로 채움
>> 비트 열을 오른쪽으로 이동 후 빈 공간은 음수는 1으로 양수는 0으로 채움
>>> 비트 열을 오른쪽으로 이동 후 빈 공간은 0으로 채움

 

 

 

 

출처

W3school

 

W3Schools.com

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

 

'Programming > Java' 카테고리의 다른 글

Java 메소드와 변수의 스코프  (0) 2024.08.01
실행 흐름의 컨트롤  (0) 2024.08.01
Java 변수의 형변환  (0) 2024.07.28
Java 변수  (0) 2024.07.27
Java 주석 처리  (0) 2024.07.27