自动转换原则
数据范围保存大的数据类型要转换为数据范围保存小的数据类型,使用强制转换(强制转型就是在变量的前面加括号,在括号里写上需要强制要转的类型。)
数据范围保存小的数据类型可以自动转换为数据范围大的数据类型
//如果数据的大小没有超过byte/short/char的表述范围,则可以自动转型。 char c4 = 'a'; int i = c4 + 2; char c5 = (char)i; // 强制转型 System.out.println(c5); int a5 = 10; long a6 = 200; byte b2 = 100; //如果数据的大小没有超过byte/short/char的表述范围,则可以自动转型。
//测试自动转型和强制转型 public class TestCast { public static void main(String[] args){ /* byte b = 123; //byte b2 = 300; //char c = -3; char c2 = 'a'; int i = c2; long d01 = 123213; float f = d01; System.out.println(f); //123213.0 System.out.println(i); //97 //测试强制转型 int i2 = -100; char c3 = (char)i2; //-100超过char的表数范围,所以转换成完全不同的值,无意义的值! System.out.println(c3); //? */ /* //表达式中的类型提升问题 int a = 3; long n = 4; double d = 5.3; int c = (int)(a+n); //做所有的二元运算符(+-/*%),都会有类型提升的问题! float f = (float)(a + d); System.out.println(f1); // 8.3 System.out.println(c); // 7 */ int money = 1000000000; //10亿 int years = 20; long total = (long)money*years; //返回的是负数 System.out.println(total); // 200 亿 //一个人70年心跳多少次 long times = 70L*60*24*365*70; System.out.println(times); // 2575440000 } }