본문 바로가기

Java

[자바의정석/3]연산자란

728x90
반응형

연산자 Operator

연산자 - 연산을 수행하는 기호 (+, -, *, / 등)
피연산자 - 연산자의 작업 대상 (변수, 상수, 리터럴, 수식)

연산자 결합규칙

종류 결합규칙 연산자 우선순위
단항 연산자 <------- ++   --   +   -   ~   !   (type) 높음






















낮음
산술 연산자 -------> *   /   %
-------> +.  -
-------> <<.  >>
비교 연산자 -------> <.  >.  <=.  >=.  instanceof
-------> ==   !=
논리 연산자 -------> &
-------> ^
-------> |
-------> &&
-------> ||
삼항 연산자 -------> ?   :   
대입 연산자 <------- =.  +=.  -=.  *=.  /=.  %=.  <<=.  >>=.  &=.  ^=.  |=

 

단항 연산자

전위형 - 값이 참조되기 전에 증가시킨다(ex j = ++i;)

후위형 - 값이 참조된 후에 증가시킨다(ex j = i++;)

int i = 5, j = 0;
j = i++;
System.out.println(i, j);
//결과 i=6 j=5

int i = 5, j = 0;
j = ++i;
System.out.println(i, j);
//결과 i=6 j=6

나머지 연산자

System.out.println(-10%8);	//결과 -2
System.out.println(10%8);	//결과 2
System.out.println(-10%-8);	//결과 -2

//피연산자의 부호를 모두 무시하고 나머지 연산을 한 결과에 왼쪽 피연산자의 부호를 붙이면 된다.

비교 연산자

대소비교 연산자 > 좌변 값이 크면 true 아니면 false
< 우변 값이 크면 true 아니면 false
>= 좌변 값이 크거나 같으면 true 아니면 false
<= 우변 값이 크거나 같으면 true 아니면 false
등가비교 연산자 == 두 값이 같으면 true 아니면 false
!= 두 값이 다르면 true 아니면 false
문자열 비교 String.equals(); 두 값이 같으면 true 아니면 false

타입이 서로 다를 경우에는 자료형의 범위가 큰 쪽으로 자동 형변환하여 피연산자의 타입을 일치시킨 후에 비교한다.


논리 연산자

OR결합 - || 피연산자 중 어느 한 쪽만 true면 true 결과로 얻음.

AND결합 - && 피연산자 양쪽 모두 true여야 true 결과를 얻음.(왼쪽이 false면 우측 실행 안함)

논리 부정 연산자 - ! true와 false를 반대로 바꿈.


비트  연산자

OR연산자 - |  피연산자 중 한 쪽의 값이 1이면, 1을 결과로 그외는 0을 얻음.

AND연산자 - &   피연산자 양 쪽이 모두 1이어야만 1을 결과로 그 외는 0을 얻음.

XOR연산자 - ^   피연산자의 값이 서로 다를 때만 1을 결과로 같을 때는 0을 얻음.

비트 전환 연산자 - ~   0 -> 1,   1 -> 0

쉬프트 연산자 <<, >>

x << n 은 x * 2^n 결과와 같다.
x >> n 은 x / 2^n 결과와 같다.
어떠한 알고리즘 문제를 풀 때, 비트 연산자를 사용해 알고리즘을 접근하면 효율성이 좋다.
메모리, 성능, 속도 측면에서 좋기 떄문에 알아두면 유용할 것 같다.

 

728x90
반응형

'Java' 카테고리의 다른 글

[자바의정석/5]배열이란  (1) 2023.10.20
[자바의정석/4]조건문과 반복문이란  (0) 2023.10.19
[자바의정석/2]변수란  (1) 2023.10.16
[자바의정석/1]Java란  (1) 2023.10.16
[Java] 람다식(lambda)  (0) 2023.09.17