Java - 연산자

수현·2022년 12월 8일

Java

목록 보기
15/23

연산자의 종류

대입 연산자

  • 변수에 다른 변수나 값을 대입
  • 이항 연산자 중 우선순위가 가장 낮음

부호 연산자

  • 단항 연산자
  • 변수의 부호를 유지하거나(+) 바꿈(-)

산술 연산자

  • 사칙 연산자 : +, -, *, /, %(나눈 후 나머지)

복합 대입 연산자

  • 대입 연산자와 다른 연산자가 함께 쓰임

증가, 감소 연산자

  • 단항 연산자
  • 1을 더하거나 1을 뺌
  • 문장의 끝(;)을 기준으로 연산 시점을 생각해야 함

관계(비교) 연산자

  • 이항 연산자
  • 연산의 결과는 true / false로 반환됨
  • <, >, <=, >=, ==, !=

논리 연산자

  • 관계 연산자와 혼합하여 많이 사용됨
  • 연산의 결과는 true / false로 반환됨
  • &&(and), ||(or), !(부정, 반대)

단락 회로 평가(short circuit evaluation)

논리 연산에서 모든 항이 실행되지 않는 경우이다.
&&, || 사용 시 앞의 항의 결과만으로 true / false가 정해질 때, 뒤 항을 평가/연산하지 않는다! 따라서 앞에서 많은 경우의 수를 판단할 수 있는 조건이 오면 좋다.

int num1 = 10;
int i = 2;
		
boolean value = ((num1 += 10) < 10) && ((i = i+2) < 10);
//앞의 항 결과 false로 뒤의 항 볼 필요 없음
		
System.out.println(value);  //false
System.out.println(num1);   //20
System.out.println(i);      //2(i+2 연산 시행되지 않음)
int num1 = 10;
int i = 2;
		
boolean value = ((num1 += 10) < 10) || ((i = i+2) < 10);
//뒤의 항까지 평가해야함
		
System.out.println(value);  //false
System.out.println(num1);   //20
System.out.println(i);      //4

삼항 연산자

  • 조건식의 true / false 결과에 따라 다른 결과가 수행됨
  • if문을 간단히 표현할 때 사용 가능

    조건식? 결과1 : 결과2

int max = 0;
int num1 = 10;
int num2 = 20;

max = (num1 > num2)? num1 : num2;

비트 연산자

  • 대입 연산자와 다른 연산자가 함께 쓰임
  • 비트연산자 이용하는 경우
    • 마스크 : 특정 비트를 가리고 몇 개의 비트값만 사용할 때
    • 비트 켜기 : 특정 비트들만을 1로 설정해서 사용하고 싶을 때
    • 비트 끄기 : 특정 비트들만을 0으로 설정해서 사용하고 싶을 때
    • 비트 토글 : 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때
int num1 = 5;   //00000101
int num2 = 10;  //00001010

System.out.println(~num1);         //11111010(-6)
System.out.println(num1 & num2);   //00000000(0)
System.out.println(num1 | num2);   //00001111(15)
System.out.println(num1 ^ num2);   //00001111(15)

System.out.println(num1 << 2);    //00010100(20)
System.out.println(num1);         //00000101(5)
System.out.println(num1 <<= 2);  //00010100(20)
System.out.println(num1);        //00010100(20)
//바뀐 값을 저장하기 위해서는 대입연산자를 사용해야 함.

비트값 읽는 방법

  • 부호비트 : 첫번째 비트를 말함, 0이면 양수, 1이면 음수
  • 양수 읽는 법 : 1을 기준으로 값을 읽음.
    ex) 000...001010 = (+) 1x2³ + 1x2¹ = 10
  • 음수 읽는 법 : 0을 기준으로 값을 읽고 +1을 한다.
    ex) 111...111010 = (-) 1x2² + 1x2의0제곱 +1 = -6

연산의 우선순위

profile
실패와 성장을 기록합니다 🎞️

0개의 댓글