데이터 형변환

성혜·2024년 1월 16일
0

Java

목록 보기
3/25
post-thumbnail

데이터 타입 변환

특정 데이터를 원하는 타입으로 변환하여 사용


형 변환 , 자료형변환

Promotion, Casting
하나의 자료형을 다른 자료형으로 변환하는 작업
코드 작성을 유연하게 하기 위해서 사용
int > double 
float > short

1. 암시적 형변환(자동 형변환), Promotion

  • 큰형 = 작은형
  • 100% 안전

byte b1;
short s1;
		
b1 = 10; //원본

//LValue = RValue
//***** LValue = RValue의 자료형은 반드시 동일
		
//(자료형) : 형변환 연산자
		
//Short = Byte
//s1 = b1;

s1 = b1;
		
		
System.out.println(s1); //복사본

//결과 
10

2. 명시적 형변환(강제 형변환), Casting

  • 작은형 = 큰형
  • 데이터가 유실될 가능성이 있음
  • 직접 형변환 꼭 해줘야 함
byte b2;
short s2;
		
s2 = 10; //원본
		
//Byte(1) = Short(2)
//자동으로 형변환 해주지 않음. 꼭 직접 써줘야함
b2 = (byte)s2;
		
System.out.println(b2); //복사본

//결과
10

❗ 주의 할 점 ❗

: 형변환 시 int의 숫자 범위를 넘어가면 오버플로우 발생

: int로 표현할 수 있는 범위를 초과하는 큰 값이므로, 형변환 시에 오버플로우가 발생하게 되어 음수 값

//기업 은행 > 계좌
int m1;
long m2 = 3000000000L;
		
//계좌 이체
		
m1 = (int)m2;
		
System.out.printf("계좌이체결과: %,d원\n" , m1);

//결과
계좌이체결과: -1,294,967,296
//*** 정수와 실수간의 크기 비교는 단순한 메로리 크기가 아닌, 실제 저장하는 수의 범위로 비교한다.

//byte(1) < short(2) < int(4) < long (8) <<< float(4) < double(8) 

long n5;
float n6 = 10;
		
//long(8) = float(4)
n5 = (long) n6;
		
System.out.println(n5);
		

✔ char 형변환

char c1 = 'A'; //내부는 숫자 데이터
System.out.println(c1); //결과 : A
System.out.println((int)c1); //결과 : 65
System.out.println((char)65); //결과 : A
		
char c2; //2byte - 원본
short t2; //2byte

-------------------------------------
		
c2 = '가';
	
//short(2) = char(2) => 오른쪽을 큰 값으로 인식 = 명시적 형변환
t2 = (short)c2; //문자 코드 값으로 변환
		
System.out.println(c2); //결과 : 가

------------------------------------
		
char c3;
short t3;
		
t3 = 65;
		
c3 = (char)t3; //이상하게 또 오른쪽을 큰 값으로 인식 (둘의 자리를 바꿨는데도)
//char는 음수가 없어서 short와 char의 같은 범위가 적음 => 그래서 명시적으로 하라고 하는 것
//***** char는 반드시 int로만 형변환한다.
		
System.out.println(c3); //결과: A

✔ 값형과 참조형간에는 형변환이 절대 불가능하다.

profile
하루를 정리하고 기록합니다.

0개의 댓글