这个表达式的数据类型是什么? (3 + 4 / (int)3.14) * 5

What is the data type of this expression? (3 + 4 / (int)3.14) * 5

我对 Java、BlueJ 等还比较陌生。我试图找出这个表达式的数据类型,我认为它是 int。但我不太确定,我很乐意帮忙!下面列出了表达式。

(3 + 4 / (int)3.14) * 5

您正在将 3.14 类型转换为 int,因此它将变为 3,因此当整个表达式被执行时,结果将变为 int 值,但是如果您不将 3.14 类型转换为 int,它将是我的意思的两倍。

double a = (3 + 4 / 3.14) * 5; // double as contains decimal value
int a = (3 + 4 / (int)3.14) * 5; //type casting causing it to become int

int。使用 JDK9+ 的 jshell 可以很容易地证明这一点:

jshell> (3 + 4 / (int)3.14) * 5
 ==> 20

jshell> /vars
|    int  = 20

如您所见,表达式的推断类型为int