Java类型混乱

Noo*_*tor 3 java casting

以这两个片段为例:

情况1:

Scanner s = new Scanner(System.in);
int n = s.nextInt(); /** take user input **/

n *= Double.NEGATIVE_INFINITY;
Run Code Online (Sandbox Code Playgroud)

案例2:

int k=10;
double kk = 10.10;

int rst = k*kk;
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都没有从我这边进行任何类型转换,但是Case 1执行并n正确打印值,但是Case 2抛出错误,can not convert from double to int.为何如此区别?

Rud*_*haw 5

第一个工作,第二个工作,因为*= += -=添加自动演员.

例如,如果您要将第二个示例更改为;

int k=10;
double kk = 10.10;
k*= kk;
Run Code Online (Sandbox Code Playgroud)

它应该工作.或者你可以添加一个像这样的显式转换rst = (int)(k*kk);