double a = 1.0; //1.0
//1은 정수지만 변수 b에 담길 때 변수가 double이므로 1이 실수형으로 coverting됐다.
//이렇게 converting 되면 잃어버리는 값이 없다.
double b = 1; //1.0
//4행은 6행에서 (double)을 생략한 것이다.
double b = (double) 1; //1.0
int d = 1; //1
//1.1은 실수인데 1.1을 담으려는 e는 int형이기 때문에 error가 발생한다.
//double형은 소수점 아래 값이 있고 int는 없기 때문에 자동으로 coverting하면 소수점 아래의 값 0.1을 잃어버린다.
int e = 1.1; //error
//명시적으로 casting 한 것이다! 즉, 개발자가 명시적으로 손실을 감수하고 형변환 시킨 것이다.
int f = (int) 1.1; //1
double g = 1.1; //1.1
//1.1 실수를 compile이 자동으로 1.0 정수로 바꾸게 되면 소수점 아래 값이 사라지기 때문에 손실이 잃어난다.
//즉, comipler는 손실이 잃어나기 때문에 개발자가 명시적으로 입력하기 전까지 자동으로 compile 해주지 않는다!
<aside> 👉
</aside>
<aside>
☝ String strI = Integer.*toString*(i);
</aside>
//int 1 to String 1 casting
String strI = Integer.toStirng(1);
System.out.println(strI); //1
//strI의 data type 확인
System.out.println(strI.getClass()); //class java.lang.Stirng
<aside>
✌️ int i = 1; String strI = String.valueOf(i);
</aside>
//
int i = 1;
Stirng strI = String.valueOf(i);
System.out.println(strI); //1

<aside> 👉
정리!
Java compiler는 손실이 잃어나지 않는 것은 자동으로 casting한다.
(e.g. **double** b = 1; //1.0)
(e.g. **double** b = **(double)** 1; //1.0)
손실이 잃어나는 것은 error을 발생키셔 casting하지 않는다. (e.g. **int** e = 1.1; //error)
손실을 감수하면서 casting 위해서는 개발자가 명시적으로 casting한다.
(e.g. **int** f = **(int)** 1.1; //1)
</aside>