Language/JAVA
Chapter2. 변수와타입 .3 타입변환
구일일구
2022. 8. 2. 16:15
반응형
[PromotionExample.java] 자동 타입 변환
package july22_chap2;
public class clon_sec03_ex1 {
public static void main(String[] args) {
byte byteValue = 10;
int intValue = byteValue; //byte는 int보다 작기 때문에 자동변환
System.out.println(intValue);
char charValue = '가';
intValue = charValue; //char는 int타입으로 변환되면 유니코드값이 int값에 저장
System.out.println("가의 유니코드= " + intValue);
intValue = 500;
long longValue = intValue; //int는 long보다 작기 때문에 자동변환
System.out.println(longValue);
intValue = 200;
double doubleValue = intValue; //double은 실수 표시기 때문에 소수점이 나타남
System.out.println(doubleValue);
}
}
</>
10
가의 유니코드= 44032
500
200.0
[CastingExample.java] 강제 타입 변환
package july22_chap2;
public class clon_sec03_ex2 {
public static void main(String[] args) {
int intValue = 44032;
char charValue = (char) intValue; //44032가 char에선 '가'임
System.out.println(charValue);
long longValue = 500;
intValue = (int) longValue; //8byte 중 끝의 4byte로 300표현 가능
System.out.println(intValue);
double doubleValue = 3.14;
intValue = (int) doubleValue; //소수점 이하 부분은 버려지고 정수만 저장됨
System.out.println(intValue);
}
}
</>
가
500
3
[CheckValueBeforeCasting.java] 변환으로 인한 데이터 손실이 발생되지 않도록 한다.
package july22_chap2;
public class clon_sec03_ex3 {
public static void main(String[] args) {
int i = 128; //byte는 -128부터 127까지
if((i<Byte.MIN_VALUE) || (i>Byte.MAX_VALUE)) {
System.out.println("byte 타입으로 변환할 수 없습니다.");
System.out.println("값을 다시 확인해 주세요.");
} else {
byte b = (byte) i;
System.out.println(b);
}
}
}
</>
byte 타입으로 변환할 수 없습니다.
값을 다시 확인해 주세요.
[FromIntToFloat.java] 정수 타입을 실수 타입으로 변환할 때 정밀도 손실을 피한다.
package july22_chap2;
public class clon_sec03_ex4 {
public static void main(String[] args) {
int num1 = 123456780;
int num2 = 123456780;
double num3 = num2;
System.out.println(num3); //num3 = 1.2345678E8
num2 = (int) num3;
System.out.println(num2); //num2 = 123456780
int result = num1 - num2;
System.out.println(result);
}
}
</>
1.2345678E8
123456780
0
[FromIntToDouble.java] 정수 타입을 실수 타입으로 변환할 때 정밀도 손실을 피한다.
package july22_chap2;
public class clon_sec03_ex5 {
public static void main(String[] args) {
int num1 = 123456780;
int num2 = 123456780;
float num3 = num2;
System.out.println(num3); //1.23456784E8
num2 = (int) num3;
System.out.println(num2); //123456784
int result = num1 - num2;
System.out.println(result);
//123456780 - 123456784 = -4
//실수 값 계산하려면 double을 쓰자.
}
}
</>
1.23456784E8
123456784
-4
[OperationsPromotionExample.java] 연산식에서 자동 타입 변환
public static void main(String[] args) {
byte byteValue1 = 10;
byte byteValue2 = 20;
//byte byteValue3 = byteValue1 + byteValue2 byte끼리 연산하려면 int로
int intValue1 = byteValue1 + byteValue2;
System.out.println(intValue1);
char charValue1 = 'A';
char charValue2 = 1;
//char charValue3 = charValue1 + charValue2;
int intValue2 = charValue1 + charValue2; //65 + 1
System.out.println("유니코드= " + intValue2); //66
System.out.println("출력문자= " + (char)intValue2); //B
int intValue3 = 10;
int intValue4 = intValue3/4; //10 나누기 4하고 정수만 출력
System.out.println(intValue4);
int intValue5 = 10;
//int intValue6 = 10 / 4.0 ; // 정수와 실수를 연산할 수 없음
double doubleValue = intValue5 / 4.0; //소수점까지 표현가능
System.out.println(doubleValue);
}
}
</>
30
유니코드= 66
출력문자= B
2
2.5
반응형