int值转换为System.out.println的Integer Wrapper类对象?

时间:2014-12-01 19:39:23

标签: java

这更加清晰而不是怀疑。在以下内容中:

int a = 10;
System.out.println(a);

我得出的结论是变量' a'原始类型int首先转换为Integer Wrapper类对象,然后为该toString对象调用Integer方法,该对象以String形式返回整数值println方法。我的理解是否正确?如果没有,那么正确的解释是什么?

4 个答案:

答案 0 :(得分:6)

你错了。它可以处理int,请参阅docs *

public void println(int x)

*始终:)

答案 1 :(得分:1)

如果您检查System.out的类型,则会看到它是PrintStreamRead the docs.

引用:

public void println(int x)

Prints an integer and then terminate the line. This method behaves 
as though it invokes print(int) and then println().

Parameters:
    x - The int to be printed.

所以,不,没有转换到Integerint完全匹配上述方法的签名,因此调用该方法。内部发生的事情是未指定的,但它可能会直接调用Integer.toString(),而不会转换为Integer

答案 2 :(得分:0)

不,我认为这不是你解释的方式。

System.out是PrintStream类的静态引用(存在于java.io包中),它具有直接打印基元的方法!!!

答案 3 :(得分:0)

确切地说,它实际上使用String.valueOf(int)方法。

这是源代码,来自PrintStream

/**
 * Prints the string representation of the int {@code i} followed by a newline.
 */
public void println(int i) {
    println(String.valueOf(i));
}