package casting;
public class Main01 {
public static void main(String[] args) {
short s = 100;
int i = s;
long l = i;
float f = l;
double d = f;
System.out.println("s = " + s);
System.out.println("i = " + i);
System.out.println("l = " + l);
System.out.println("f = " + f);
System.out.println("d = " + d);
System.out.println("----------------");
int myage1 = 20;
double myage2 = myage1;
System.out.println("myage1 : " + myage2);
System.out.println("myage2 : " + myage2);
}
}
암묵적 형변환은 서로 다른 자료형을 연산 혹은 대입하는 경우, java 컴파일러가 자료형을 통일한다.
이 과정에서 발생하는 형변환을 암묵적 형변환이라고 한다.
int a = 100; //정수형
float b = a; //정수형을 실수형에 대입
암묵적 형변환은 어떤 변수가 더 큰 범위의 변수로 대입 가능함을 의미한다.
package casting;
public class Main02 {
public static void main(String[] args) {
long l = 100L;
int i = (int) l;
short s = (short)i;
System.out.println("l : " + l);
System.out.println("i : " + i);
System.out.println("s : " + s);
System.out.println("------------------------");
double pi = 3.14d;
// 큰 범위의 변수를 작은 범위의 변수에 대입하는 것은 에러
// int pi2 = pi;
int pi2 = (int)pi;
System.out.println("pi : " + pi);
System.out.println("pi2 : " + pi2);
}
}
데이터의 손실을 감수하더라도, 강제로 형변환 시키는 형태
자료형 b = (변환할자료형)a;
실수형을 정수형으로 변환하는 경우, 소수점 이하 자리는 버려진다.
double a = 3.14d;
int b = (int)a; // 3
package casting;
public class Main03 {
public static void main(String[] args) {
double a = 10.5d;
float b = 20.5f;
/*
* 큰 범위의 변수와 작은 범위의 변수가 연산을 수행하면,
* 작은 범위의 변수가 큰 범위의 데이터형으로 암묵적 형변환을 수행한다.
* 그러므로 a + b 의 결과는 double 형의 변수가 된다.
*
*/
![](https://velog.velcdn.com/images/aldus107/post/ea4ee184-1ca7-48b8-9caa-4eaf469a6f4a/image.PNG)
// float f = a + b;
double d = a + b;
System.out.println("d : " + d);
float f = (float) (a + b);
System.out.println("f : " + f);
}
}
눈에라도 익혀놓으면 쓸일있을것이다