Back-end

[JAVA] 자바 독학기 #4 - 정수 자료형들과 관련 연산자(feat. 얄팍한 코딩사전)

리스보아 2023. 8. 23. 08:00
반응형

제목 썸네일

정수 자료형들과 관련 연산자

 

이번에도 자바스크립트와 다른 부분, 내가 헷갈리는 부분 위주로 정리를 해보려고 한다!

(내가 아는것 같으면서도 제대로 아는게 맞는지 가끔 자신이 없음🤨)

 

 

 

🔹 목차

정수 자료형

형변환 (Casting)

이항 연산자

복합 대입 연산자

단항 연산자

비교 연산자

 

 

 

 

🔹 정수 자료형

byte, short, int, long

 

각 자료형의 변수에 자료형을 초과하는 값을 담을 수 없음!

byte overByte1 = 128; // Error

 

큰 자료형에 작은 자료형의 값을 넣는 것은 가능

 >> 묵시적 형변환이 일어남

 

byte byte1 = 100;

short short1 = 100;

 

short1 = byte1; // 100이란 값은 동일하지만 short 자료형으로 바뀜

 

 

들어갈 수 있는 값이라 하더라도, 작은 자료형에 큰 자료형의 값을 넣을 수는 없음!

>> 어떠한 조치를 취하면 넣을 수 있음

 

주의!

int의 범위를 벗어나는 수에는 리터럴의 끝에 l 이나 L 붙여줘야함

long _8b_long1 = 123456789123456789L

 

 

 

🔹 형변환 (Casting)

더 큰 자료형의 값을 더 작은 자료형의 변수에 넣어주는 경우

형변환을 이용하면 가능하다.

 

byte iAmByte;
int iAmInt = 100;

// 명시적 형변환
iAmByte = (byte) iAmInt;

 

하지만 담을 수 없는 크기의 값을 넣으면서 형변환을 하면 이상한 값이 들어가게 된다

byte iAmByte;
int iAmInt = 12334234;

// 명시적 형변환
iAmByte = (byte) iAmInt;  // iAmByte에 이상한 값이 들어감

 

 

 

 

🔹 이항 연산자

부수효과가 없는 연산자

 

연산자들의 우선순위?

-, + 보다는 *, / 가 우선해서 괄호로 제어해야함

 

 

중요 - 1

int 끼리 연산하면 int를 반환한다.

-> long에 넣을 수 있음

-> 더 작은 변수에는 명시적 형변환해야 가능

 

두 변수를 더한 결과를 형변환 할 때?

 

int a = 1;

int b = 2;

 

short c = (short) (a + b); // 명시적 형변환

 

중요 - 2

byte 끼리의 합을 byte에 넣어줄 수 없고

short 끼리의 합을 short에 넣어줄 수 없음

 

byte byte1 = 1;
byte byte2 = 2;
short short1 = 1;
short short2 = 2;

// 아래는 모두 불가능!
byte byte3 = byte1 + byte2;
short short3 = short1 + short2;

// 아래는 가능
int int1 = byte1 + byte2;
int int2 = short1 + short2;

 

byte와 short 의 연산은 int를 반환하기 때문!

--> 그냥 int를 많이 쓰는 이유...

 

이외 특징들

- long 끼리의 연산은 long 반환

- 정수 자료형의 계산은 소수점 아래를 버림

  byte int1 = 5/2; // int1 : 2

 

 

🔹 복합 대입 연산자

부수효과를 일으키는 연산자

 

a += b (a = a + b)

a -= b (a = a - b)

a *= b (a = a * b)

a /= b (a = a / b)

a %= b (a = a % b)

 

 

🔹 단항 연산자

+, -, x++, ++x, x--, --x

 

++, -- 는 값을 언제부터 변화시키는지 '시점'이 중요함

 

x++

- 반환: 값 그대로

- 부수효과: 1 증가

 

++x

- 반환: 1 증가한 값

- 부수효과: 1 증가

 

 

int int1 = 1;

int int2 = int1++;  // int2: 1 (이 시점에서 1)

int int3 = ++int;  // int3: 3 (이 라인으로 넘어올 때 int1은 2였는데 ++int 이므로 1 더해짐)

 

 

🔹 비교 연산자

a == b

a != b

a > b

a >= b

a < b

a <= b

 

연산자 우선순위 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

반응형