본문 바로가기

Study/Java

Java 기초_연산자

연산 시 주의사항

  • 자바의 연산자는 연산대상이 될 수 있는 데이터 형이 정해져 있음
  • 범위를 넘는 연산에 대해서는 에러가 일어나지 않고, 단지 연산결과에 이상한 값이 들어가게 됨
  • 자바에서의 연산에러는 오로지 0으로 나누거나 나머지를 구할때 일어남
byte a = 10;
a << 3

/*
10은 00001010 이다.
3만큼 왼쪽으로 이동하면 00001010000 이 된다.

*/

0. 연산자의 우선 순위


1. 최우선 연산자

 

() : 괄호연산자

. : 참조 연산자 (ex. System.out.print 에서 단어 사이사이의 '.')

[] : 배열 첨자 연산자

 


2. 단항 연산자

 

+ - : 부호 연산자 [부호 값을 나타냄]

! : 논리 부정 연산자 [true, false 간의 값을 부정]

    (ex.boolean a = true; !a -> false   a가 가지고 있는 값을 부정하겠다는 뜻)

~ : 비트 부정 연산자 [숫자 데이터의 비트 부정]

    (ex.byte a = 10; 컴퓨터에 들어갈때는 8byte 사이즈인 00001010으로 들어감, ~a -> 11110101 )

 

++a : 전위 증가 [연산 전에 a의 값 1 증가]

a++ : 후위 증가 [연산 후에 a의 값 1 증가]

--a : 전위 감소 [연산 전에 a의 값 1 감소]

a-- : 후위 감소 [연산 후에 a의 값 1 감소]

int a = 10;
int b = ++a;
// 2행의 ++a는 전위 증가 연산자로 a+1=11이다.

int a = 10;
int b = a++;

/*
6행의 a++은 후위 증가 연산자로
a의 값을 먼저 b에 넣어준다.
6행의 b = 10;
이후 b에게 값을 주고 난 뒤 a의 값을 1 증가시켜준다.
6행의 a = 11;
*/

// 연산기호가 변수의 뒤에 올때 (후위 연산자)는 연산자의 우선순위가 맨 뒤로 간다.

 

(Cast) : Cast 연산자

int a = 10;
byte b = (byte)a;

// 3행의 (byte)는 cast연산자로 우선순위가 빠르다.

instanceof : 다형성 연산자 [true, false]


3. 산술 연산자

 

* : 두 수의 곱 (ex.a * b)

/ : 나눗셈(몫) (ex.a / b)

% : 나눗셈(나머지) (ex.a % b)

+ : 두 수의 합 (ex.a + b)

- : 두 수의 차 (ex.a - b)


4. shift 연산자

 

<< : Left shift [a를 b만큼 왼쪽으로 shift]

    (ex. a << b)

>> : Right shift [a를 b만큼 오른쪽으로 shift]

    (ex. a >> b)

>>> : 부호 없는 Right shift [a를 b만큼 오른쪽으로 shift]

(ex. a >>> b)


5. 비교 관계 연산자

 


6. 비트 연산자


7. 논리 연산자


8. 삼항 연산자

int a = 10;

int b = 5;

a > b ? "크다" : "작다" (a의 값이 b보다 크면 "크다"를 출력, 아니면 "작다"를 출력)


9. 배정대입 연산자


10. 직접 해보기

    전위 증감 연산자

후위 증감 연산자

배정 대입 연산자