본문 바로가기
Back-End/Java

연산자

by newny 2022. 12. 8.
반응형
  • 연산자 : 연산에 사용되는 표시나 기호
  • 피연산자 : 연산자와 함께 연산되는 데이터
  • 연산식 : 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것
  • 연산식은 반드시 하나의 값을 산출하며, 값 대신에 연산식을 사용할 수 있음

 

단항 연산자

  • 부호 연산자(+,-)
    • byte타입 변수를 부호 연산하면 int타입으로 변환됨 
    • 부호를 변경하는 것도 연산이므로 연산 결과는 int타입
byte b = 100;
byte result = -b; // 컴파일 에러 발생
int result = -b; // 올바른 코딩 예

 

  • 증감 연산자(++,—)
    • 피연산자의 값에 1을 증가시키거나 감소시킴
int x = 1;
int y = 1;

int result1 = ++x + 10
//증감 연산자가 변수의 앞에 위치할 때 : 우선 1을 증가 시킨 후 다른 연산자를 처리
System.out.println(result1); // result1 = 12

int result2 = y++ + 10
//증감 연산자가 변수의 뒤에 위치할 때 : 다른 연산자를 먼저 처리 후 1을 증가시킴
System.out.println(result2); // result2 = 11

 


 

이항 연산자 : 피연산자가 두개인 연산자

  • 산술 연산자(+,-,*,/,%)
    • 피연산자들의 타입이 동일하지 않을 경우 규칙을 사용하여 피연산자들의 타입을 일치시킨 후 연산을 수행
    • % : 나눗셈의 나머지를 산출
    • long 타입을 제외한 정수 타입 연산은 int 타입으로 산출
    • 피연산자 중 하나라도 실수 타입이면 실수 타입으로 산출

 

  • 오버플로우와 언더플로우
    • 정수타입 연산시 허용값을 벗어나는 경우(오버플로우 또는 언더플로우) 에러가 발생 하지 않고 해당 정수타입의 최소값 또는 최대값으로 되돌아 감
byte value = 127;
value++;
System.out.println(value); // 결과: -128

 

  • 문자 결합 연산자(+) : 왼쪽에서 오른쪽으로 차례대로 연산
"JDK" + 3 + 3.0 // 연산결과 : JDK33.0
3 + 3.0 + "JDK" // 연산결과 : 6.0JDK

 

  • 비교 연산자(<,≤,>,≥,==,≠)
    • 대소 또는 동등을 비교해서 true, false 산출
    • 흐름 제어문인 조건문(if), 반복문(for, while)에서 주로 이용되어 실행 흐름을 제어할 때 사용됨
    • char 타입이면 유니코드 값으로 비교 연산을 수행함
    • 피연산자들의 타입이 동일하지 않을 경우 규칙을 사용하여 피연산자들의 타입을 일치시킨 후 연산을 수행
      • float 과 double 을 비교할 경우 예외발생 → 부동소수점 방식, float 타입과 double 타입의 정밀도 차이 때문에 같은 숫자를 비교하더라도 false가 산출됨
double v1 = 0.1;
float v2 = 0.1f;
System.out.println(v1 == v2);
// false
// v2가 double로 자동 현 변환 될때 부동소수점 방식으로 인해
// 0.1이 아닌 0.10000000149...  으로 저장됨
// 따라서 false로 출력됨

System.out.println((float)v1 == v2); // true

 

  • 논리 연산자(&&,||,&,|,^,!)
    • AND논리곱(&&), OR논리합(||), 배타적 논리합(^), 논리부정(!)
    • boolean 타입만 사용할 수 있음
    • &,| : 두 피연산자를 모두 평가해서 산출결과를 냄
    • &&,|| : 앞의 피연산자가 false 또는 true 라면 뒤의 피연산자를 평가하지 않고 바로 false또는 true를 산출, 따라서 &,| 보다 더 효율적으로 사용 가능
    • 논리 부정 연산자(!)
      • true를 false로, false를 true로 변경
      • boolean 타입에만 사용할 수 있음
      • 실행 흐름을 제어할 때 사용
      • 토글(toggle) 기능을 구현할 때

 

  • 비트 이동 연산자
    • a<<b : 정수 a의 각 비트를 b만큼 왼쪽으로 이동,  a*2^b와 동일한 결과가 됨
    • a>>b : 정수 a의 각 비트를 b만큼 오른쪽으로 이동, a/2^b와 동일한 결과가 됨

 

  • 대입 연산자(=,+=,-=,*=,/=,%=)
    • 사용방법 : x+=10 → x=x+10
    • 대입연산자는 모든 연산자들 중에서 가장 낮은 연산 순위를 가지고 있음

 


 

삼항 연산자(?:) : 3개의 피연산자를 필요로 하는 연산자

  • ?앞의 조건식에 따라 콜론(:) 앞뒤의 피연산자가 선택된다고 해서 조건 연산식이라고 부르기도함
  • 조건식이 true일 경우 콜론 앞의 피연산자가 선택됨, false일 경우 콜론 뒤의 피연산자가 선택됨
// 삼항 연산자
int score = 95;
char grade = (score > 90) ? 'A' : 'B'; // grade 변수에 'A' 저장

// if문
int score = 95;
char grade;
if(score > 90) {
	grade = 'A'
} else {
	grade = 'B'
}

//위 아래의 결과는 같음
반응형

'Back-End > Java' 카테고리의 다른 글

조건문과 반복문  (0) 2022.12.08
변수와 타입  (0) 2022.12.08
자바 시작하기  (0) 2022.12.08

댓글