티스토리 뷰

개인공부/Java

[Java] 연산자

jeson 2023. 11. 19. 23:24
[한빛미디어] 뇌를 자극하는 JAVA 프로그래밍 책으로 학습한 내용을 정리한 것입니다.

 

* 연산(Operation) : 정해진 규칙에 따라 데이터를 처리하여 결과를 산출하는 것

 

* 연산자(Operator) : 연산에 사용되는 표시나 기호

 

* 피연산자(Operand) : 연산자가 처리하는 데이터

 

* 식(Expression) : 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것

 

 

[자바의 연산자들]

구분 연산자 기능 설명
사칙 연산자 +  -  *  /  % 사칙연산 및 나눗셈의 나머지 계산
부호 연산자 +  - 음수와 양수의 부호
문자열 연결 연산자 + 두 문자열을 연결
단순 대입 연산자 = 우변의 값을 좌변의 변수에 대입
증가/감소 연산자 ++  -- 변수 값을 1만큼 증가/감소
수치 비교 연산자 <  >  <=  >= 수치의 크기 비교
동등 연산자 ==  != 데이터의 동일 비교
논리 연산자 &  |  ^  ! 논리적 AND, OR, XOR, NOT 연산
조건 AND/OR 연산자 &&   || 최적화된 논리적 AND, OR 연산
조건 연산자 ?: 조건에 따라 두 값 중 하나 택일
비트 연산자 &  |  ^  ~ 비트 단위의 AND, OR, XOR, NOT 연산
쉬프트 연산자 <<  >>  >>> 비트를 좌측/우측으로 밀어서 이동
복합 대입 연산자 +=  -=  *=  /=  %=  &=  |=  ^=  <<=  >>= >>>= +  -  *  /  % &  |  ^ <<  >>  >>> 
연산자와 =연산자의 기능을 함께 수행
캐스트 연산자 (타입 이름) 타입의 강제 변환

 

* 논리 연산자의 형식

- 피연산자1 & 피연산자2 -> 두 값 모두 true면 true, 그렇지 않으면 false

- 피연산자1 | 피연산자2 -> 두 값이 모두 false면 false, 그렇지 않으면 true

- 피연산자1 ^ 피연산자2 -> 하나가 true, 하나가 false라면 true, 그렇지 않으면 false

- !피연산자1 -> 피연산자1 값이 true면 false, false이면 true

(참고) 피연산자는 모두 boolean 타입

 

 

* 조건 연산자의 형식

- 피연산자1 && 피연산자2 -> 두 값 모두 true면 true, 그렇지 않으면 false

- 피연산자1 || 피연산자2 -> 두 값이 모두 false면 false, 그렇지 않으면 true

(참고) 피연산자는 모두 boolean 타입

 

* 논리 연산자와 조건 연산자의 작동 방법 차이점

ex. (5 > 6) & (7 < 8)

논리 연산자는 5 > 6 이 false여도 7 < 8 논리식도 연산함

조건 연산자는 5 > 6 이 false일 경우에  7 < 8 조건식을 연산하지 않음

따라서 작동 방식 차이로 인해 조건 연산자를 사용하는 것이 효율적임

 

 

* 비트 연산자

- 피연산자1 & 피연산자2 -> 이진법으로 바꾼 피연산자 값들을 두 데이터를 같은 위치 비트들을 AND 연산

- 피연산자1 | 피연산자2 -> 이진법으로 바꾼 피연산자 값들을 두 데이터를 같은 위치 비트들을 OR 연산

- 피연산자1 ^ 피연산자2 -> 이진법으로 바꾼 피연산자 값들을 두 데이터를 같은 위치 비트들을 XOR 연산

- ~피연산자1 -> 이진법으로 바꾼 피연산자 값들을 데이터의 각 비트들을 NOT 연산

 

* 비트 연산자 사용 시 주의할 점

1. 비트 연산자는 피연산자의 타입이 서로 다르면 넓은 범위를 표현하는 타입 쪽으로 자동 타입 변환

2. 피연산자가 모두 int타입보다 범위가 좁은 타입일 경우, 무조건 int타입으로 타입 변환

 

 

* 쉬프트 연산자

- 데이터 구성 비트를 오른쪽이나 왼쪽으로 밀어서 이동시키는 기능

- 정수 << 비트수 -> 정수를 구성하는 비트를 주어진 비트수만큼 왼쪽으로 이동하고 빈공간은 0으로 채움

- 정수 >> 비트수 -> 정수를 구성하는 비트를 주어진 비트수만큼 오른쪽으로 이동하고 빈공간은 최상위 부호 비트로 채움 

- 정수 >>> 비트수 -> 정수를 구성하는 비트를 주어진 비트수만큼 오른쪽으로 이동하고 빈공간은 0으로 채움

 

* 쉬프트 연산자 쉽게 계산하는 방법

- 정수 << 비트수 = 정수 * 2^비트수

- 정수 >> 비트수 = 정수 / 2^비트수

 

* 쉬프 연산자 사용 시 주의할 점

1. 쉬프트 연산자는 비트 연산의 대상이 되는 데이터 타입이 int타입보다 범위가 좁은 타입일 경우, 무조건 int타입으로 타입 변환

 

 

[연산자 우선 순위]

우선순위 연산자 처리순서
높음  ↑











낮음  ↓
++  --  +(부호 연산자)  -(부호 연산자)  ~  !  캐스트 연산자   ←
*  /  %  →
+ (덧셈 연산자, 문자열 연결 연산자)  - (뺼셈 연산자)  →
<<  >>  >>>  →
<  <=  >  >=  →
==  !=  →
&  →
^  →
|  →
&&  →
||  →
?:  ←
=  +=  -=  *=  /=  %=  &=  |=  ^=  <=  >=  >>=  <<=  ←

 

 

'개인공부 > Java' 카테고리의 다른 글

[Java] 데이터 타입  (0) 2023.11.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함