감자의 개발공부 일지

[JAVA] 연산자 본문

JAVA

[JAVA] 연산자

Elie_J 2022. 7. 12. 23:54
반응형

<연산자와 연산식>

1. 연산자(Operations)

-> 연산에 사용되는 표시나 기호(+, - , *, / , %, =, …)

 

2. 피연산자(Operand)

-> 연산 대상이 되는 데이터(리터럴, 변수)

 

3. 연산식(Expressions)

-> 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것

 

4. 연산자의 종류

연산자 종류 연산자 피연산자 수 산출값 타입 기능 설명
산술 +, -, *, /, % 이항 숫자 사칙연산 및 나머지 계산
부호 +, - 단항 숫자 음수와 양수의 부호
문자열 + 이항 문자열 두 문자열을 연결
대입 =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= 이항 다양 우변의 값을 좌변의 변수에 대입
증감 ++, -- 단항 숫자 1 만큼 증가/감소
비교 ==, !=, >, <, >=, <=, instanceof 이항 boolean 값의 비교
논리 !, &, |, &&, || 단항
이항
boolean 논리적 NOT, AND, OR 연산
조건 (조건식) ? A : B 삼항 다양 조건식에 따라 A 또는 B 중 하나를 선택
비트 ~, &, |, ^ 단항
이항
숫자
blooean
비트 NOT, AND, OR, XOR 연산
쉬프트 >>, <<, >>> 이항 숫자 비트를 좌측/우측으로 밀어서 이동

 

<연산의 방향과 우선순위>

1. 연산의 방향과 우선순위

연산자 연산 방향 우선순위
증감(++, --), 부호(+,-), 비트(~), 논리(!) <----- 높음























낮음
산술(*,/,%) ----->
산술(+, -) ----->
쉬프트(<<, >>, >>>) ----->
비교(<, >, <=, >=, instanceof) ----->
비교(==, !=) ----->
논리(&) ----->
논리(^) ----->
논리(|) ----->
논리(&&) ----->
논리(||) ----->
조건(?:) ----->
대입(=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=) <-----

 

<단항 연산자>

1. 단항연산자란?

-> 피연산자가 1개인 연산자

 

2. 단항 연산자의 종류

(1) 부호 연산자: +, -

-> boolean 타입과 char 타입을 제외한 기본 타입에 사용 가능

-> 부호 연산자의 산출 타입은 int

 

(2) 증감 연산자: ++, --

-> 변수의 값을 1증가 시키거나(++) 1 감소 (--) 시키는 연산자

-> 증감 연산자가 변수 뒤에 있으면 다른 연산자 먼저 처리 후 증감 연산자 처리

 

(3) 논리 부정 연산자: !

-> Boolean type 에만 사용 가능

-> 피연산자가 true면 false 값을 산출하고, 피연산자가 false이면 true 값을 산출

 

(4) 비트 반전 연산자: ~

-> byte, short, int, long 타입만 피연산자가 될 수 있다.

-> 비트값을 반전 시킨다.

 

<이항 연산자>

1. 이항 연산자란?

-> 피연산자가 2개인 연산자

 

2. 이항연산자의 종류

(1) 산술연산자: +,-,*,/,%

-> boolean 타입을 제외한 모든 기본 타입에 사용 가능

-> 결과값 산출할 때 Overflow주의

-> 정확한 계산은 정수를 사용

-> NaN과 Infinity 연산은 주의할 것

 

(2) 문자열 연결 연산자: +

-> 피연산자 중 문자열이 있으면 문자열로 결합

 

(3) 대입 연산자: =,+=,-=,*=,/=,%=,&=,^=,|=,<<\,>>=,>>>=

-> 오른쪽 피연산자의 값을 좌측 피연산자인 변수에 저장

-> 모든 연산자들 중 가장 낮은 연산 순위 -> 제일 마지막에 수행

-> 단순대입연산자, 복합대입연산자

 

구분 연산식 (변수 대입연산자 피연산자)  
단순 대입 연산자 = 피연산자의 값을 변수에 저장
복합 대입 연산자 += 피연산자의 값을 변수의 값과 더한 후 다시 변수에 저장 (변수=변수+피연산자)
-= 피연산자의 값을 변수의 값에서 뺀 후에 다시 변수에 저장 (변수=변수-피연산자)
*= 피연산자의 값을 변수의 값과 곱한 후에 다시 변수에 저장 (변수=변수*피연산자)
/= 피연산자의 값과 변수의 값을 곱한 후에 다시 변수에 저장 (변수=변수*피연산자)
%= 피연산자의 값과 변수의 값을 나눈 후에 나머지를 변수에 저장 (변수=변수/피연산자)
&= 피연산자의 값과 변수의 값을 & 연산 후 결과를 변수에 저장 (변수=변수&피연산자)
|= 피연산자의 값과 변수의 값을 | 연산 후 결과를 변수에 저장 (변수=변수|피연산자)
^= 피연산자의 값과 변수의 값을 ^ 연산 후 결과를 변수에 저장 (변수=변수^피연산자)
<<= 피연산자의 값과 변수의 값을 << 연산 후 결과를 변수에 저장 (변수=변수<<피연산자)
>>= 피연산자의 값과 변수의 값을 >> 연산 후 결과를 변수에 저장 (변수=변수>>피연산자)
>>>= 피연산자의 값과 변수의 값을 >>> 연산 후 결과를 변수에 저장 (변수=변수>>>피연산자)

 

(4) 비교 연산자: <,<=,>,>=,==,!=

-> 대소(<, <=, >, >=) 또는 동등(==, !=) 비교해 boolean 타입인 true/false 산출

-> 동등 비교 연산자는 모든 타입에 사용

-> 크기 비교 연산자는 boolean 타입 제외한 모든 기본 타입에 사용

-> 흐름 제어문인 조건문(if), 반복문(for, while)에서 주로 이용

 

(5) 논리 연산자: &&,||,&,|,^,!

-> 논리곱(&&), 논리합(||), 배타적 논리합(^), 논리 부정(!) 연산 수행

-> 피연산자는 boolean 타입만 사용 가능

구분 연산식  설명
AND
(논리곱)
&&
또는
&
피연산자 모두가 true일경우에만 연산 결과는 true
OR
(논리합)
||
또는
|
피연산자 중 하나만 true이면 연산 결과는 true
XOR
(배타적 논리합)
^ 피연산자가 하나는 true이고 다른 하나가 false일 경우에만 연산 결과는 true
NOT
(논리부정)
! 피연산자의 논리값을 바꿈

(6) 비트 논리 연산자:&,|,^,~

-> 피연산자가 boolean타입일 경우 일반 논리 연산자

-> 피연산자가 정수 타입일 경우 비트 논리 연산자로 사용

-> 비트 연산자는 피연산자를 int타입으로 자동 타입 변환 후 연산 수행

구분 연산식 설명
AND

(논리곱)
& 두 비트가 모두가 1일 경우에만 연산 결과는 1
OR
(논리합)
| 두 비트 중 하나만 1이면 연산 결과는 1
XOR
(배타적 논리합)
^ 두 비트 중 하나는 1 이고 다른 하나가 0일 경우 연산 결과는 1
NOT
(논리부정)
~ 보수

(7) 비트 이동 연산자: <<,>>,>>>

-> 정수 데이터의 비트를 좌측 또는 우측으로 밀어 이동시키는 연산 수행

 

<삼항 연산자>

-> 세 개의 피연산자를 필요로 하는 연산자

-> 앞의 조건식 결과에 따라 콜론 앞 뒤의 피연산자 선택 -> 조건 연산식

 

📕 참고

이것이 자바다 / 신용권 / 한빛미디어(2015)

반응형

'JAVA' 카테고리의 다른 글

[Java] JSP, J Query, Java의 차이점  (0) 2023.01.04
[JAVA] 변수 ~ 타입변환  (0) 2022.07.11
[JAVA] JAVA의 특징  (0) 2022.07.06