0.先结论
对于+,-,*,/,%(即加减乘除余)运算来说:
- 只要有一个算数是double,结果就是double(算数转为double再运算);
- 否则,只要有一个算数是float,结果就是float(算数转为float再运算);
- 否则,只要有一个算数是long,结果就是long(算数转为long再运算);
- 否则,结果为int(算数转为int再运算);
对于+=,-=,/=,*=来说,结果取决于左边运算符的类型(先计算后强转型);
1.例子如下
public class BasicDataType {
public static void main(String[]args){
char c1 = 'a',c2 = 'b';
byte b1 = 1,b2 = 2;
short s1 = 3,s2 = 4;
int i1 = 5,i2 = 6;
long l1 = 7,l2 = 8;
float f1 = 1.0f,f2 = 2.0f;
double d1 = 3.0,d2 = 4.9;
System.out.println(getDataType(d1+i1));//double与int相加
System.out.println(getDataType(f1+b1));//float与byte相加
System.out.println(getDataType(l1-c1));//long减去char
System.out.println(getDataType(c2+b2));//char与byte相加
//+=和*=等运算符会转化为左边数据的类型
// 先计算,再强制转化成左边类型;不是先转化,后计算;
System.out.println(l2*=d2);//所以结果不是8*4=32,而是(long)(8*4.9)=39
System.out.println(getDataType(s1+=i2));
System.out.println(getDataType(l2*=d1));
}
public static String getDataType(Object object){
return object.getClass().toString();
}
}