java不同类型数据四则运算类型转换

在java编程过程中,我们经常会遇到不同类型间的四则运算,比如:

int n=3;
float f=2.2f;
int tmp=n+f;
此时程序无法编译成功,编译器会报如下错误:

Type mismatch: cannot convert from float to int

也就是说编译器认为(n+f)是float类型的数据,不能直接用float类型数据给int类型数据赋值。必须先强制类型转换:

int tmp=(int)(n+f);
为什么n+f结果是float类型,我们如何判断两个不同类型数据相加后的数据类型呢?

下面给出java中四则运算的类型转换规则:

1、如果两个操作数中有一个是double类型,另一个就会转换为double类型;

2、否则,如果有一个操作数是float,另一个就会转化为float;

3、否则,如果有一个操作数是long,另一个就会转换为long;

4、否则,两个操作数都将转换为int类型。


例如定义如下几个数据:

double d=7.89d;
float f=1.2f;
long l=64L;
int n=8;
short s=4;
byte b=2;

则d+f、d+n、d+l、d+s、d+b结果都是double类型;

f+l、f+n、f+s、f+b结果都是float类型;

l+n、l+s、l+b结果都是long类型;

而n+s、n+b、s+b结果都是int类型。

你可能感兴趣的:(java)