Java 기초 자료형 - TypeCasting(형변환)
728x90
기본 환경
JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 |
목표
자바의 자동 형변환과 명시적(강제) 형변환을 이해한다.
코드
package ex02variable;
public class E07TypeCasting {
public static void main(String[] args) {
/*
자동 형변환 : 작은상자의 데이터를 큰 상자에 대입할때 자동으로
형변환이 일어난다.
*/
byte b1 = 65;
short s1;
s1 = b1;//byte형이 short형보다는 작은 자료형임.
System.out.printf("b1은 %d, s1은 %d%n", b1, s1);
/*
아래코드는 자동형변환은 아님. CPU는 int보다 작은 자료형을
int로 강주하고 연산을 진행하며, 결과도 int로 반환한다.
CPU의 특성이라 생각하자.
*/
int num1 = b1 + s1;
int num2 = num1;
System.out.println("num1은" + num1);
/*
char형(문자타입)에 byte형(숫자타입)을 바로 대입할수 없다.
성질이 다르므로 명시적 형변환 후 대입해야 한다.
*/
//char ch1 = b1 에러발생
char ch2 = (char)b1;
System.out.println("b1 =" + b1 + ", ch2 =" + ch2);
/*
명시적 형변환 : 큰상자의 자료를 작은상자의 자료형에 할당해야 할 때
사용함. 단, 자료의 손실이 있을 수 있으므로 필요한 경우에만
사용해야함.
*/
short s2 = 100;
byte b2 = (byte)s2;
System.out.printf("데이터미손실 : b2 = %d, s2 = %d\n", b2, s2);
/*
소주점 아래부분이 버려지므로 데이터 손실있음. 따라서 특수한
경우가 아니라면 사용을 자제해야함.
*/
int num3;
double dl = 3.14;
num3 = (int)dl;
System.out.printf("데이터손실 : num3 = %d, dl = %.2f %n", num3, dl);
/*
char형 int를 연산하면 결과는 int이므로 char형 변수에
대입하려면 명시적(강제) 형변환 후 대입해야한다.
*/
char ch3 = 'A', ch4;
int num4 = 2;
//ch4 = ch3 + num4; 타입이 맞지 않아 에러가 발생
ch4 = (char)(ch3 + num4);
System.out.println("ch4 = " + ch4);
}
}
같은 자료형일 경우 작은 공간에서 큰 공간으로 형변환이 이러나면 자동으로 형변환을 해줍니다. 하지만 int형보다 작은 형일 경우 CUP가 자동으로 int형으로 바꿔서 계산하기 때문에 자동형변환이라고 하지는 않는다. 큰 공간에 있는 자료형을 작은 공간으로 옮기거나 자료형이 다를 경우 명시적 형벼환을 사용해 주어야 한다. 앞에서 말했듯이 String은 클래스 이므로(Method 공간에 할당됨으로) 형변환이 되지 않는다.
결과 값
'Java > Java_기초부터 _끝까지' 카테고리의 다른 글
Java 기초 자료형 - 연습문제2 (0) | 2020.09.29 |
---|---|
Java 기초 자료형 - 연습문제 1 (0) | 2020.09.29 |
Java 기초 자료형 - EscapeSequence(이스케이프 시퀀스) (0) | 2020.09.28 |
Java 기초 자료형 - ConstantVar(상수) (0) | 2020.09.28 |
Java 기초 자료형 - Char형,boolean형 (0) | 2020.09.28 |