[Java] 연산에 대해

2024. 3. 7. 20:35BE/Java

데이터를 처리하고 결과값을 산출하는 것을 연산이라 한다.

연산에서 사용되는 기호를 연산자라 하고 연산에 사용되는 데이터는 피연산자라고 한다.

이 모든 것을 통틀어서 연산식이라 한다.

 

연산 우선순위

증감 연산 ( ++,  -- )

단항 연산으로 변수의 값을 1 증가시키거나 1 감소시키는 연산을 의미한다.

boolean 타입을 제외한 모든 기본 타입에 사용할 수 있다.

증감 연산자는 앞 또는 뒤에 피연산자가 올 수 있는데 연산 순서가 다르다.

피연산자가 앞에 있는 경우 연산 우선순위에 따라 연산을 수행하지만 피연산자가 뒤에 있는 경우 다른 연산자를 먼저 처리한 이후에 연산을 수행한다.

 

부호 연산 ( + , - )

단항 연산으로 양수, 음수를 표시하는 부호 연산을 의미한다.

boolean 타입과 char 타입을 제외한 나머지 기본 타입에 사용할 수 있다.

 

비트 반전 연산 ( ~ )

단항 연산으로 정수 타입 byte, short, int, long 의 피연산자에서만 사용된다.

피연산자를 2진수로 표현했을 때 각 비트값을 1의 보수를 취한다.

MSB도 포함하기 때문에 부호가 반대인 값이 산출된다.

 

피연산자가 연산을 수행하기 전에 int 타입으로 변환되고 연산을 수행한다.

따라서 비트 반전 연산 산출 타입은 int 타입이 된다. 

 

논리 부정 연산 ( ! )

단항 연산으로 논리값을 반대로 변경하는 연산을 의미한다.

따라서 boolean 타입에서만 사용할 수 있다.


산술 연산 ( * , / , % )

이항 연산으로 산술 연산 중에 곱하기, 나누기, 나머지 연산이 우선 순위가 높다.

boolean 타입을 제외한 모든 기본 타입에 사용할 수 있다.

피연산자 타입이 동일하지 않을 경우, 피연산자 타입들을 일치시킨 후 연산을 진행한다.


산술 연산 ( + , - )

산술 연산 중 더하기, 빼기 연산이다.

마찬가지로 boolean 타입을 제외한 모든 기본 타입에 사용할 수 있다.

 

산술 연산자 중 + 는 문자열 연결 연산자로도 사용할 수 있다.

피연산자 중 문자열이 있다면 + 연산자는 문자열 연결 연산을 수행한다.


비트 이동 연산 ( << , >> , >>> )

이항 연산으로 정수 데이터에서만 연산이 가능하다.

좌측, 우측, 빈 자리는 0으로 채우면서 오른쪽으로 이동하는 연산이다.


대소 비교 연산 ( < , > , <= , >= )

이항 연산으로 대소 비교하여 boolean 타입을 산출한다.

boolean 타입을 제외한 기본 타입에 사용할 수 있다.


동등 비교 연산 ( == , != )

이항 연산으로 동등 비교하여 boolean 타입을 산출한다.

모든 기본 타입에 사용할 수 있다.


논리 연산 ( & )

이항 연산으로 모든 피연산자가 true이면 true를, 그 외의 경우 false를 산출한다.

 

정수 타입의 경우 비트 연산이 수행된다.


논리 연산 ( ^ )

이항 연산으로 피연산자가 서로 다른 논리값인 경우에만 true를 산출한다.

 

정수 타입의 경우 비트 연산이 수행된다.


논리 연산 ( | )

이항 연산으로 피연산자 중 하나 이상 true이면 true를 산출한다.

 

정수 타입의 경우 비트 연산이 수행된다.


논리 연산 ( && )

이항 연산으로 앞의 피연산자가 false이면 뒤의 피연산자를 평가하지 않고 바로 false를 산출한다.


논리 연산 ( || )

이항 연산으로 앞의 피연산자가 true이면 뒤의 피연산자를 평가하지 않고 바로 true를 산출한다.


조건 연산 ( ? : )

삼항 연산으로 조건식이 true이면 첫 번째 값, false이면 두 번째 값을 산출한다.


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

이항 연산으로 우측 피연산자를 좌측 피연산자에 변수에 저장하는 연산이다.


 

728x90

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

[Java] 참조 타입에 대해서  (0) 2024.03.08
[Java] 조건문과 반복문  (0) 2024.03.08
[Java] 타입 변환  (0) 2024.03.07
[Java] 데이터 타입  (0) 2024.03.07
[Java] 변수  (0) 2024.03.06