为什么我可以将数值变量声明为double但仍然使用.nextInt()?

时间:2018-06-14 22:57:27

标签: java primitive primitive-types

好的,我是编码的新手,所以我对一切都不熟悉。这是我的问题:

为什么是.nextInt();即使名称是.nextInt();?

,也会处理一个double
double max = scan.nextInt();

这有效,但为什么?

3 个答案:

答案 0 :(得分:0)

如果您查看java-doc,您实际上会看到nextInt()返回int,方法名称建议。

在您的具体示例中,nextInt()返回的值加宽double,因为每个int都可以放入double类型

答案 1 :(得分:0)

句点之后的事物(.nextInt())称为方法或函数。

现在问你的实际问题:

方法.nextInt()将返回一个整数,然后将其内部转换为double,因为如果您明确要求,int每个double也是double max= (通过说{{1}})

另见:Why does Java implicitly (without cast) convert a `long` to a `float`?

答案 2 :(得分:-1)

正如其他人所指出的,这是implicit cast的示例 - 您可以将int分配给double,并且它会自动进行类型转换(类型已更改)你。

这里的基本想法是,将int分配给double并不会造成任何严重的伤害(除了消耗更多的内存)。

请注意,反之为 not true - 可能在将double转换为int时会造成严重伤害,因此没有隐含从double投射到int