[JAVA]연산자

yoon·2023년 11월 30일

java

목록 보기
3/19
post-thumbnail

✅ 연산자 우선 순위

  1. 산술 > 비교 > 논리 > 대입
  2. 단항 > 이항 > 삼항
  3. 단항 연산자와 대입 연산자의 진행방향은 오른쪽에서 왼쪽

✅ 증감 연산자 ++/--

  • 전위형 : 값이 참조되기 전에 증가 ( ++i )
  • 후위형 : 값이 참조된 후에 증가 ( i++ )
int i =1, j = 10;
System.out.println(i++); // 1
System.out.println(++j); // 11
System.out.println(i); // 2
System.out.println(j); // 11

✅ 형변환 연산자(casting)

형변환 연산자는 피연산자의 값을 읽어서 지정된 타입으로 형변환하고, 그 결과를 반환할 뿐이다.
그래서 피연산자의 값은 형변환 후에도 아무런 변화가 없다

double d = 84.1;
int i = (int)d;

System.out.println(i); // 84
System.out.println(d); // 84.1

✅ 자동 형변환

기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환된다.
그러나 변수가 저장할 수 있는 값의 범위보다 더 큰 값을 저장하려는 경우에 형변환을 생략하면 에러가 발생한다.

byte b = 1000; // error (byte의 범위는 -128~127)
byte b2 = (byte)1000; // error는 발생하지 않지만, 범위를 넘어가 값손실 발생 > -24저장

✅ 산술 변환

이항 연산자는 두 피연산자의 타입이 일치해야 연산이 가능하다.
연산 전에 피연산자 타입의 일치를 위해 자동 형변환 되는 것을 '산술 변환'이라고 한다.

ex) long + int > long + long > long
	byte + short > int + int > int
    char + short > int + int > int

규칙1. 피연산자의 값손실을 최소화 할 것 > 보다 큰 타입으로 일치
규칙2. int보다 작은 타입은 int로 변환

byte a = 10;
byte b = 20;
byte c = a * b;

위와 같이 작성한 경우 에러가 발생한다.
byte는 int보다 작기 때문에 산술 변환에 의해 ab는 intint가 되어 int값을 반환한다.
하지만 c는 byte타입이기 때문에 형변환이 필요하다.

byte c = (byte)(a*b);

위와 같이 바꾸면 에러는 발생하지 않지만 값손실이 발생하여 다른 결과값을 받는다.

✅ 조건 연산자

result = (x>y) ? x : y; // x가 y보다 크면 result = x ,아니면 y
profile
하루하루 차근차근🌱

0개의 댓글