본문 바로가기

Java

Java 연산자

연산자


그냥 연산 할때 쓰는 놈들이다. 연산을 컴퓨터님 께서 자동적으로 해주면 얼마나 편할까?


하지만 아직 그정도의 컴퓨터가 없어 직접 써주어야 이놈이 돌아간다.


잡수다는 이정도에서 그만하고 연산자에 대해 알아 보겠다.


쉽게 말해서 더하기, 빼기, 곱하기, 비교등등 해주는 것이 연산자라 할 수 있다.


종류

연산자

사칙 연산

+, -, *, /, %

부호 연산

+, -

논리 연산

&, |, ^, !, &&, ||

비트 연산

&, |, ^, ~, <<, >>, >>>

대입 연산

=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, >>>=

문자열 연산

+

비교 연산

>, <, <=, >=

조건 연산

?:

증감 연산

++, --

형변환 연산

(type)


※ 정수형 자료형들의 크기


연산자

형식

결과

+

피연산자1 + 피연산자2

피연산자1 값에 피연산자2 값을 더한 값

-

피연산자1 - 피연산자2

피연산자1 값에 피연산자2 값을 뺀값

*

피연산자1 * 피연산자2

피연산자1 값에 피연산자2 값을 곱한 값

/

피연산자1 / 피연산자2

피연산자1 값에 피연산자2 값을 나눈 값

%

피연산자1 % 피연산자2

피연산자1 값에 피연산자2 값을 나눈 나머지 값


※ 사칙 연산자


연산자

형식

결과

+

+피연산자

피연산자 값을 +로 부호변환

-

-피연산자

피연산자 값을 -로 부호변환


※ 부호 연산자


연산자

형식

결과

++

++피연산자

(전위 증가 연산자)

다른 연산자와 함께 사용할 경우 피연산자의 값을 먼저 1만큼 증가한 후 그 증가값으로 다른 연산을 수행한다.

피연산자++

(후위 증가 연산자)

다른 연산자와 함께 사용할 경우 현재 피연산자의 값으로 다른 연산을 먼저 수행한 후에 피연산자의 값을 먼저 1만큼 증가한다.

--

--피연산자

(전위 감소 연산자)

다른 연산자와 함께 사용할 경우 피연산자의 값을 먼저 1만큼 감소한 후 그 감소 값으로 다른 연산을 수행한다.

피연산자--

(후위 감소 연산자)

다른 연산자와 함께 사용할 경우 현재 피연산자의 값으로 다른 연산을 먼저 수행한 후에 피연산자의 값을 먼저 1만큼 감소한다.


※ 증감 연산자


연산자

형식

결과

<

피연산자1 < 피연산자2

피연산자1이 피연산자2보다 작으면 true, 그렇지 않으면(크거나 같으면) false값 리턴

>

피연산자1 > 피연산자2

피연산자1이 피연산자2보다 크면 true, 그렇지 않으면 (작거나 같으면) false 값 리턴

<=

피연산자1<= 피연산자2

피연산자1이 피연산자2보다 작거나 같으면 true, 그렇지 않으면(크면) false 값 리턴

>=

피연산자1 >= 피연산자2

피연산자1이 피연산자2보다 크거나 같으면 true, 그렇지 않으면(작으면) false 값 리턴

==

피연산자1 == 피연산자2

피연산자1과 피연산자2가 같으면 true, 그렇지 않으면(작거나 크거나) false 값 리턴

!=

피연산자1 != 피연산자2

피연산자1과 피연산자2가 같지 않으면 true, 그렇지 않으면(같으면) false 값 리턴


※비교 연산자


연산자

형식

결과

&

피연산자1 & 피연산자2

피연산자1과 피연산자2가 모두 true면 true, 그렇지 않으면(둘중 하나가 false) false 값 리턴

|

피연산자1 | 피연산자2

피연산자1과 피연산자2 중 적어도 하나가 true, 그렇지 안으면(둘 중 하나가 false 리턴

^

피연산자1 ^피연산자2

피연자1과 피연산자2가 서로 다르면 true, 그렇지 않으면(서로 같으면)false 값 리턴

!

!피연산자

피연산자가 true이면 false, false이면 true 값 리턴

&&

피연산자1 &&피연산자2

피연산자1 과 피연산자2 가 모두 true이면 true, 그렇지 않으면(둘 중 하나가 false) false 값 리턴

||

피연산자1 || 피연산자2

피연산자1 과 피연산자2 중 적어도 하나가 true이면 true, 그렇지 않으면(둘 모두 false) false 값 리턴


※ 논리 연산자



연산자

형식

결과

&

피연산자1 & 피연산자2

피연산자1 값과 피연산자2 값을 이진수로 변형한 후 각 비트별로 AND 연산을 수행한 결과값 리턴

|

피연산자1 | 피연산자2

피연산자1 값과 피연산자2 값을 이진수로 변형한 후 각 비트별로 OR 연산을 수행한 결과값을 리턴

^

피연산자1 ^ 피연산자2

피연산자1 값과 피연산자2 값을 이준수로 변형한 후 각 비트별로 XOR 연산을 수핸한 결과값 리턴

<<

정수 << 비트수

정수를 대상으로 비트수만큼 왼쪽으로 이동하고 이동한 자리는 '0'으로 채움

>>

정수 >> 비트수

정수를 대상으로 비트수만큼 오른쪽으로 이동하고 이동한 자리는 이동전 최상위 비트(MSB) 값으로 채움

>>>

정수 >>> 비트수

정수를 대상으로 비트수만큼 오른쪽으로 이동하고 이동한 자리는 '0'으로 채움


※ 비트 연산자


연산자

형식

결과

=

피연산자1 = 피연산자2

피연산자2 값을 피연산자1에 대입한다.

+=

피연산자1 += 피연산자2

피연산자2의 값을 피연산자1에 대입하며, 다음과 동일하다. 피연산자1 = 피연산자1 + 피연산자2

-=

피연산자1 -= 피연산자2

피연산자2의 값을 피연산자1에 대입하며, 다음과 동일하다. 피연산자1 = 피연산자1 - 피연산자2

*=

피연산자1 *= 피연산자2

피연산자2의 값을 피연산자1에 대입하며, 다음과 동일하다. 피연산자1 = 피연산자1 * 피연산자2

/=

피연산자1 /= 피연산자2

피연산자2의 값을 피연산자1에 대입하며, 다음과 동일하다. 피연산자1 = 피연산자1 / 피연산자2

%=

피연산자1 %= 피연산자2

피연산자2의 값을 피연산자1에 대입하며, 다음과 동일하다. 피연산자1 = 피연산자1 % 피연산자2

&=

피연산자1 &= 피연산자2

피연산자2의 값을 피연산자1에 대입하며, 다음과 동일하다. 피연산자1 = 피연산자1 &= 피연산자2

|=

피연산자1 |= 피연산자2

피연산자2의 값을 피연산자1에 대입하며, 다음과 동일하다. 피연산자1 = 피연산자1 |= 피연산자2

^=

피연산자1 ^= 피연산자2

피연산자2의 값을 피연산자1에 대입하며, 다음과 동일하다. 피연산자1 = 피연산자1 ^= 피연산자2

<<=

피연산자1 <<= 피연산자2

피연산자2의 값을 피연산자1에 대입하며, 다음과 동일하다. 피연산자1 = 피연산자1 <<= 피연산자2

>>=

피연산자1 >>= 피연산자2

피연산자2의 값을 피연산자1에 대입하며, 다음과 동일하다. 피연산자1 = 피연산자1 >>= 피연산자2

>>>=

피연산자1 >>>= 피연산자 2

피연산자2의 값을 피연산자1에 대입하며, 다음과 동일하다. 피연산자1 = 피연산자1 >>>= 피연산자2


※ 대입 연산자


형식

예시

결과

문자열 + 문자열

"대한" + "민국"

"대한민국"

문자열 + 비문자열

int a = 10;인 경우 "a=" + a

"a = 10"

비문자열 + 문자열

boolean is = true;인 경우 is + " 입니다."

"true 입니다."


※ 문자열 연산


연산자

형식

결과

?:

조건식 ? 식1 : 식2

조건식이 참이면 식1을 수행하고, 거짓이면 식2를 수행한다.


※ 조건 연산자


연산자

형식

결과

()

(type)피연산자

피연산자를 type형으로 변환한다.


※ 형변환 연산자


우선순위

연산자


높음


낮음


++, --, +(부호연산), -(부호연산), ~, !, ()

*, /, %

+(사칙 및 문자열 연산), -

<<, >>, >>>

<, <=, >, >=

==, !=

&

^

|

&&

||

?:

=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, >>>=


※ 연산자 우선순위


위의 표들을 보면 어떠한 연산자가 어디에 어떻게 무었때문에 사용되는 지 알꺼라 생각 된다.


계속 말하는 거지만 공부하는 존재의 글이니 다 맞다고 할수 없다. 하지만 이표는 다 맞다.


출처 : http://blog.naver.com/PostView.nhn?blogId=backgohome&logNo=110131027755