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

 

반응형