지니, 개발하다.

[Java] CH03. 연산자 본문

Study/JAVA

[Java] CH03. 연산자

dev.genii 2022. 9. 24. 16:01

연산자의 종류

연산자의 종류는 결과에 따라 크게 세가지로 구분하고 총 9가지 이다.
(이 구분은 Do it 자바 완전정복 을 참고하였고, 기준에 따라 다를 수 있다.)

#1. 결과가 인 연산자

  1. 산술 연산자 (+, -, *, /, %)
  2. 증감 연산자 (++, --)
  3. 비트 연산자 (&, |, ^, ~)
  4. 시프트 연산자 (<<, >>)
  5. 논리시프트 연산자 (>>>)

#2. 결과가 true/false인 연산자

  1. 비교 연산자 (==, !=, >, <)
  2. 논리 연산자 (&&, ||)

#3. 결과가 실행인 연산자

  1. 대입 연산자 (+=, -=)
  2. 삼항 연산자 ( ? : )

1. 산술 연산자

+, -, *, /, %
앞의 네가지는 사칙연산이므로 나머지 연산자 %만 알아본다.

나머지 연산자(%)

모듈로(modulo)연산 이라고도 하며,
말그대로 나누기를 수행한 후 나머지를 나타내는 연산이다.


5%3 : 5를 3으로 나눈 나머지 값(2)이 결과값이다.
이 때, 나머지 값이 3을 넘을 수 없으므로 나머지는 0,1,2 중에 나머지가 결정된다.
이런 특성으로 값을 가두거나 조건을 만들수 있다.


예) 배수/약수 같은 경우,
6%2==0 로 표현하면 2는 6의 약수이고 6은 2의 배수를 표현할 수 있다.

2. 증감 연산자

++, --
증감 연산자는 값을 1만큼 증가하거나 감소하는 연산자이다.
이 연산자는 연산자의 위치에 따라 결과값이 달라질 수 있다.


전위형

int b=++a;

실행 순서
step1. a -> a+1 //a 값을 증가시키는 것을 먼저 실행
step2. a -> b //그 다음에 증가시킨 a를 b 에 대입


후위형

int b=a++;

실행 순서
step1. a -> b //a를 b에 대입하는 것을 먼저 실행
step2. a -> a+1 //그 다음에 a 값을 증가시킴

전위형/후위형 진행 순서차이 확인하기

int a = 10;
System.out.println(a++); // 10 출력
System.out.println(++a); // 12 출력
//두번째 줄에서 a=10을 출력 한 후 a 값이 11로 증가
//세번째 줄에서 11에서 a를 12로 증가한 후 출력하여 12 출력
int b = 10;
b++; // 이 시점의 b는 10
System.out.println(b); // 11 출력
System.out.println(++b); // 12 출력

3. 비트 연산자

and(&), or(|), xor(^), not(~)

  • & : 값이 모두 1일 때, 1
  • | : 값이 둘 중 하나가 1일 때, 1
  • ^ : 값이 둘 중 하나만 1일 때, 1
  • ~ : 0과 1 값을 1과 0으로 바꿈

4. 시프트 연산자

<<, >>

  • <<
    왼쪽으로 비트를 밀어낸다.
    2의 배수만큼 커진다.
    양수/음수 모두 동일하게 적용.

  • >>
    오른쪽으로 비트를 밀어낸다.
    2의 배수만큼 작아진다.
    음수일 때는 값에 +1 해줘야 한다.


5. 논리시프트 연산자

>>>
단순 자리이동하는 기능을 가진다.
각 비트별 의미/기능이 지정된 경우,
비트연산자(&,|,^,~)와 함께 각 비트별 값을 확인 할 수 있다.

6. 비교 연산자

==, !=, >, >=, <, <=
값의 크기 비교를 할 수 있는 연산자이다.
연산에 =가 들어가는 경우에는 반드시 =을 우측에 작성한다.

7. 논리 연산자

&&, ||

  • &&
    비교하는 두 대상이 모두 true 인 경우, true
    따라서, 첫번째 나온 조건이 false 일 때에는 두번째 조건은 확인하지 않고 false 처리

  • ||
    비교하는 두 대상 중에 하나만 true 인 경우, true
    따라서, 첫번째 나온 조건이 true 일 때에는 두번째 조건은 확인하지 않고 true 처리

System.out.println(5>3&&4==7||3!=7); // true

8. 대입 연산자

+=, -=

int a =5;
a=a+5;
a+=5; // 윗줄을 이렇게 단축시켜 작성할 수 있다.

a=a-5;
a-=5; // 윗줄을 이렇게 단축시켜 작성할 수 있다.

int e =10;
int f= 5;

e+=f; // e=15
System.out.println(e); // 15

e-=f; // e=10
System.out.println(e); // 10

9. 삼항 연산자

삼항 연산자는 연산자들 중 유일하게 3개의 피연산자가 있는 연산자다.


(조건문)? 연산결과 1 : 연산결과 2


조건문이 참이면 연산결과 1 출력,
조건문이 거짓이면 연산결과 2 출력

int e=10;
int x = (e==10) ? 1:0;
System.out.println(x); //1
Comments