5.类型转换

由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。

float虽然比long字节小,但是小数优先级高

运算中,不同类型的数据先转化为同一类型,然后进行运算。

强制转换 高->低

int i=128;
byte b=(byte)i; //输出 -128,原因:Byte(Ctrle+左键)最大值127,内存溢出
//强制转换 (类型)变量名

自动转换 低->高

int i=128;
double b=i;//正常输出128.0

注意点:
1.不能对布尔值(布尔是按位的)直接进行转换
2.不能把对象转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!

//精度问题
System.out.println( (int)23.7); //23
System.out.println((int)-45.89f); //-45

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

//字符的类型转换
char C ='a';
int d = C+1;
System.out.println(d);//输出98
System.out.println((char)d);//输出b

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割

int money = 10_0000_0000;//方便区分
System.out.println(money);
int year=20;
int total=money*years;//-1474836480,计算时溢出

long total2=money*years;//这次用long接收
System.out.println(total2);//-1474836480,计算时依旧溢出。
                           //原因转换之前已经存在问题
//正确方法 计算前解决精度                  
1ong total3 =money* ((1ong)years);//先把一个数转换为long,整个表达式会用long进行计算
System.out.println(total3);
                          
 //大小写L都可以,但是用大写L更直白