由大到小需要强制转换,由小到大不需要
精度由小到大顺序:byte,short,char -> int -> long -> float -> double
//compile success
float method(){
int i=1;
return i;
}
//compile error
int method2() {
double i = 3.4d;
//error: cast to int
return i;
}
类型提升规责:
+ 所有的byte、short和char类型的值都被提升为int类型
+ 如果一个操作数是long类型,就将整个表达式提升为long类型
+ 如果一个操作数是float类型,就将整个表达式提升为float类型
+ 如果一个操作数是double类型,就将整个表达式提升为double类型
byte b=20;
b = b*2; //compile error 整个表达式提升为int类型