1.大精度转换成小精度:可能会有精度缺失,因为大精度的数据类型随随便便可以包含小精度的数据类型。当大精度的数据值大于小精度的数值域,那么就会发生精度缺失和溢出。
2.所以想要大转小就必须进行强制转换。
(运行查看)
public class Hello
{
publicstatic void main(String[] args)
{
doublenum1 = 3.1415926 ;
//float num2 = num1 ;Hello.java:6: 错误:可能损失精度
//正确强制类型转换方法:(double--->float)
floatnum2 = (float)num1 ;
System.out.println(num2);//输出结果是:3.1415925; 问题:3.1415925< 3.1415926
intnum3 = (int)num1 ;
System.out.println(num3);//输出结果是:3 ; 问题:3 < 3.1415926
/*
注意
*/
// 1.当赋予的值小于byte的取值范围时:
byte num4 = 125 ; //输出完成 (耗时0 秒) - 正常终止
// 当赋给byte类型(num4)的值,在byte的取值范围中时,编译器就不会报错,而是在最底层偷偷进行一次类型转换(这个过程是感觉不出来的,会让人误认为int——>byte不用强制类型转换)。
// 2.当赋予的值大于byte的取值范围时:
byte num5 = 128; //Hello.java:16: 错误:可能损失精度
//因为 128 大于了 byte的取值范围,所以编辑器会进行报错。
}
}
字符串类型与任何数据类型相“+”都是字符串类型。
String +(byte,short,int,long,float,double,char) = String