Java_07_형 변환 정리

지원·2024년 3월 23일
0

Java

목록 보기
7/13
post-thumbnail

Literal

리터럴이란 소스코드의 고정된 값을 대표하는 용어

int myInt = 123;
byte myByte = 38;
short myShort = 2;

여기서 123, 38, 2는 '정수 리터럴'

기본적으로는 int 자료형이지만
byte나 short 변수의 초기값으로 설정하면 아무 문제 없이 값이 들어간다.

long myLong = 12345678910; // 오류: 정수 값이 너무 크다

여기서도 오른쪽 12345678910은 int 리터럴인데,
int가 담을 수 있는 범위를 넘어섰기 때문에 오류가 난다.
이 문제를 해결하기 위해서는 뒤에 L을 붙여주면 된다.

long myLong = 12345678910L;

12345678910L은 정수 리터럴이 아니라 '롱 리터럴'

long e = 123;
long f = 123L;   // long의 리터럴 표현방법

float g = 3.14;  // 오류: 형이 맞지 않음. 필요한 값: float, 발견된 값: double
float h = 3.14f; // float의 리터럴 표현방법
float i = 314f;  // float의 리터럴 표현방법

double j = 3.14;
double k = 314d; // double의 리터럴 표현 방법

랭크

Type Size Range

byte 1 byte -128 ... 127

short 2 byte -32,768 ... 32,767

int 4 byte -2,147,483,648 ... 2,147,483,647

long 8 byte -9,223,372,036,854,775,808 ... 9,223,372,036,854,775,807

float 4 byte 1.4023985 x 10^-45 ... 3.4028235 x 10^38

double 8 byte 4.940656458412465 x 10^-324 ... 1.797693134862316 x 10^308

위에서 부터 아래로 갈수록 랭크가 높은 자료형

형 변환

자바의 숫자 자료형들은 위에서 배운 랭크에 따라 형 변환이 가능

바꾸고자 하는 형(to)이 기존의 형(from)보다
넓은 데이터를 담을 수 있는 자료형일 경우
특별한 처리 없이 형을 변환할 수 있다.

int a = 36;
double b = a;     // int to double

short c = 17;
long d = c;       // short to long

float e = 3.14f;
double f = e;     // float to double

타입 캐스팅 (Type Casting)

값(혹은 변수) 앞에 (자료형)(예: (int) x)을 적어주면 강제적으로 형을 변환시킬 수 있다.
물론 형 변환이 가능한 경우에 대해서만 가능
숫자 자료형들 사이에서는 모두 가능

int a = 3;
double b = (double) a;
long c = (long) a;

System.out.println(b);
System.out.println(c);
3.0
3

!! 더 큰 랭크의 값을 더 작을 랭크의 변수에 담는 것도 가능하지만,
데이터의 손실이 있다는 걸 주의 !!

double pi = 3.14;
int myInt = (int) pi; // 데이터 손실 (소수 부분)
System.out.println(myInt);
3
int a = 9, b = 5;
System.out.println(a / b);
1

이렇게 정수값 a와 b가 주어졌을 때, 9 / 5를 하면 1이 나온다
여기서 1.8이 나오게 하고 싶으면 타입 캐스팅을 해서 9를 9.0으로 바꿔주고, 9.0 / 5를 계산하면 된다!

int a = 9, b = 5;
System.out.println((double) a / b);
1.8

0개의 댓글

관련 채용 정보