728x90
반응형
public class D_Cast {
// 자동 형변환
public void rule1() {
// 값의 범위가 작 -> 큰 자동적으로 변환
// int - > double
int i = 12;
double d = 3.3;
double result = i + d;
// i + d
// 12 + 3.3
// (int) + (double)
// 12.0 + 3.3
//(double) (double)
// 15.3
//(double)
System.out.println("result : " + result);
// int -> long
int i2 = 2_147_483_647; // <- int의 최대값 // 언더바로 자릿수 구분 가능.
long l2 = i2 + 1000000000000000000L;
System.out.println("i2 : " + i2);
System.out.println("l2 : " + l2);
// float -> double
float f3 = 1.0f;
float f4 = 3.1231233123123511111f;
double d3 = f4;
System.out.println("f3 + f4 : " + (f3 + f4));
System.out.println("f3 + d3 : " + (f3 + d3));
// long -> float
long l5 = 12345678910L;
float f5 = l5;
System.out.println("l5 : " + l5);
System.out.println("f5 : " + f5);
// char -> int
char ch6 = 'A';
int i6 = ch6 + 5;
System.out.println("char : " + i6);
char ch7 = 65;
System.out.println("ch7 : " + ch7);
// byte , short , int 리터럴
byte b8 = 126;
byte b9 = 1;
//byte b10 = b8 + b9;
// 바이트 연산 오류 해결 방법
// 1) 결과를 int 형으로 받는다.
int i10 = b8 + b9;
// 2) byte로 결과를 출력하는 방법
// --> 강제 형변환
}
// 강제 형변환
public void rule2() {
// 값의 범위가 큰 자료형 -> 작은 자료형으로 강제적으로 변환 하는 것.
int iNum = 10;
double dNum = 5.89;
//int sum = iNum + dNum;
//해결방법 1)
//double sum = iNum + dNum; // 자동 형변환.
//해결방법 2)
//dNum을 int형으로 형변환.
// int sum = iNum + (int)dNum;
// 10 + (int)5.89
// 10 + 5
// 15
//해결방법 3)
// iNum + dNum의 결과를 int로 강제 형변환
int sum = (int)(iNum + dNum); // 두 합의 결과는 double이므로 (int)로 강제 형변환
System.out.println("sum : " + sum);
//
byte b1 = 126;
byte b2 = 1;
byte bSum = (byte)(b1 + b2);
System.out.println(b1 + " + " + b2 + " = " + bSum);
}
// 데이터 손실 **
public void dataLoss() {
int iNum = 290;
System.out.println("iNum : " + iNum);
byte bNum = (byte)iNum;
System.out.println("bNum : " + bNum);
}
}
728x90
반응형