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

Why is it that I can declare a numerical variable as a double but still use .nextInt()?

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

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

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

这行得通,但为什么呢?

如果你像方法名一样窥视java-doc you'll actually see that nextInt() returns int

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

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

现在回答你的实际问题:

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

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

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

这里的基本思想是,将 int 分配给 double 并没有任何严重的危害(除了消耗稍微多一点的内存)。

请注意,反过来 不是 正确 - 可能 double 转换为 [=10] 会造成严重伤害=], 所以没有从 doubleint.

的隐式转换