数据类型的转换是保证数据精确度的一种手段。

  • 2个基本事实
  • 自动转化
  • 强制转化
  • 编译器的优化

2个基本事实事实

-** 浮点数常量默认为double**

float a=3.5;// 此处将会由doube-->float造成数据丢失

自动转化
转化原则:数据类型的取值范围小的自动转化为数据类型取值大的,大的转化为小的需要强制转化
特例:char 和short,char 和byte之间都不能进行相互转化

java 数据转换万亿 java数据转换规则_java 数据转换万亿


byte a=4;
int b=a;//byte-->int 大-->小 自动转化
强制转化


1.int a=5;

byte b=(byte)a;//int-->byte 小-->大 强制转化 a的值小于b的取值范围 不会出现数据损失

2.int a=129

byte b=(byte)a//该处和上面一样 但129超出了byte的取值范围 会出现数据损失

编译器的优化处理
当byte char short或者他们与整形常量之间之间的任意2个进行计算时,编译器为了保证其得到的结果不溢出,会将其计算答案转化成int数据类型

java 数据转换万亿 java数据转换规则_java 数据转换万亿_02


该处容易被认为了常量默认为int byte和int计算byte转为int 最后答案为int 这样理解不对

java 数据转换万亿 java数据转换规则_取值范围_03


只有将其整体转化才行

java 数据转换万亿 java数据转换规则_编译器_04


这样才不会报错