[JAVA 개념정리] 연산자(Operator)

Doyeon·2023년 1월 18일
0

JAVA 개념정리

목록 보기
5/13
post-thumbnail
post-custom-banner

연산자

  • 연산자 : 연산을 수행하는 기호
  • 피연산자 : 연산자의 연산 수행 대상
  • 연산결과를 반환하지 않으면 연산자가 아니다.

연산자의 종류

  • 산술 > 비교 > 논리 > 대입 : 대입은 제일 마지막에 수행
  • 단항(1) > 이항(2) > 삼항(3) : 단항 연산자 우선순위가 제일 높음

증감 연산자

  • 증가 연산자(++) : 피연산자 값 1 증가
  • 감소 연산자(--) : 피연산자 값 1 감소
int k = 0, j = 3;

// 전위형
k = ++j;  // k = 4
j; // j = 4 

k = 0, j = 3; // 초기화

// 후위형
k = j++;  // k = 3
j;  // j = 4

부호 연산자

  • - : 피연산자의 부호 반대로 변경
  • + : 아무 변화 없음(실제 사용 X)

형변환 연산자

형변환 : 변수 또는 상수 타입을 다른 타입으로 변환하는 것

자동 형변환

  • 기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환 된다. (컴파일러가 자동으로 해준다.)
  • 표현범위가 좁은 타입 → 넓은 타입 : 더 넓은 쪽으로 형변환
  • 표현범위가 좁은 타입 ← 넓은 타입 : 값 손실이 일어나므로 자동 형변환 불가. 강제 형변환 필요
float f = 1234; // (OK) int 타입의 값을 float 타입 변수에 저장

int i = 3.14f; // (Error) float 타입 값이 더 크기 때문에 값 손실이 생겨서 error
int i = (int)3.14f; // (OK) 수동으로 형변환 시켜야 한다.

사칙 연산자

덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/)

int a = 10, b = 4;

System.out.println(a / 4); // 2 출력. 소수점 이하 버림
System.out.println(a / (float)b);  // 2.5 출력

산술 변환

연산 전에 피연산자의 타입을 일치시키는 것

  1. 두 피연산자의 타입을 같게 일치시킨다.(보다 큰 타입으로 일치)
  2. 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.
char ch = '2';

// 문자 '2' 는 숫자로 50, '0' 은 48
// 따라서 int 타입으로 자동으로 변하기 때문에 50 - 48 = 2
System.out.println(ch - '0');

int a = 1_000_000; // 1백만
int b = 2_000_000; // 2백만

// long l = a * b; // -1454759936. 계산할 때 이미 오버플로우 발생하므로 형변환 필요

long l = (long)a * b;
// long * int -> long * long => 1_000_000L * 2_000_000 -> 1_000_000L * 2_000_000L
System.out.println("l = " + l);

Math

  • 수학과 관련된 메서드를 가지고 있는 클래스
  • round() : 실수를 소수점 첫째 자리에서 반올림한 정수를 반환
  • ceil() : 올림값을 double 형으로 반환
  • floor() : 내림값을 double 형으로 반환
  • abs() : 절대값. int, double 기본형 모두 사용 가능
// 소수점 3째 자리에서 반올림한 값 구하기
double pi = 3.141592;
double shortPi = Math.round(pi * 1000) / 1000.0;

나머지 연산자 %

  • 왼쪽 피연산자를 오른쪽 피연산자로 나눈고 난 나머지 값을 반환
  • 나누는 피연산자(오른쪽)는 0이 아닌 정수만 허용
  • 부호 무시

비교 연산자

  • 연산 결과는 true / flase 둘 중 하나다.
  • 대소비교 연산자 : < , >, ≤, ≥
    • 두 피연산자의 값의 크기 비교
    • 기본형 중 boolean을 제외한 나머지 자료형에 사용 가능
    • 참조형 사용 불가
  • 등가비교 연산자 : ==, ≠
    • 두 피연산자의 값이 같은지 다른지 비교
    • 모든 자료형(기본형 - 값 비교, 참조형 - 주소 비교) 사용 가능

문자열의 비교

  • == 대신 equals() 사용
    • equals : 두 피연산자의 값 자체 비교
    • == : 두 피연산자의 주소값 비교

논리 연산자

  • && : AND. 논리식이 모두 true 이면 true 반환
  • || : OR. 논리식이 하나라도 true 이면 true 반환
  • ! : NOT. 논리식 결과가 true 이면 false 반환

비트 연산자

  • & : (비트 AND 연산) 대응되는 비트가 모두 1이면 1 반환
  • | : (비트 OR 연산) 대응되는 비트가 하나라도 1이면 1 반환
  • ^ : (비트 XOR 연산) 대응되는 비트가 서로 다르면 1 반환
  • ~ : (비트 NOT 연산, 1의 보수) 비트를 1이면 0으로, 0이면 1로 반전
  • << : (left shift 연산) 명시된 수만큼 비트 전부 왼쪽 이동
  • >> : (right shifg 연산) 부호 유지하면서 지정한 수만큼 비트 전부 오르쪽 이동
  • >>> : 지정한 수만큼 비트 전부 오른쪽 이동, 새로운 비트 전부 0
  • 비트 단위로 연산하기 때문에, 정수형, 형변환 가능한 자료형만 연산 가능

조건 연산자

  • 삼항 연산자 조건식 ? 반환값1 : 반환값2
  • 조건식이 true 면 반환값1, false 면 반환값2

대입 연산자

  • = : 왼쪽의 피연산자에 오른쪽 피연산자를 대입

복합 대입 연산자

  • 연산자(op)와 대입 연산자의 결합 (op=)
  • ex) += , -= , /= , *= , %= , <<= , &= , ^= , |=

[참고] <Java의 정석 - 기초편>

profile
🔥
post-custom-banner

0개의 댓글