System.out.printIn()如何接受整数?

所以我几天前开始学习java并得到一个问题。 对于下一个表达式:

String foo=123; 

不被允许。 但是,在System.out.printIn() ,我们可以使用类似的东西:

 int x=5; System.out.println(x); 

由于不允许隐式地为字符串分配整数,为什么上面的表达式有效? 任何人都可以给出详细解释吗? 我也想知道我们什么时候可以使用这种隐含的东西,什么时候不能。

PrintStream System.out有很多重载方法:

 println(boolean x) println(char x) println(int x) println(long x) println(float x) println(double x) println(char x[]) println(String x) println(Object x) 

您可以使用整数调用println的原因是因为该方法已重载。 基本上有多个名为println的方法,其中一个接受整数。

看看这里: PrintStream

System的静态成员是一个PrintStream ,它有一个带有签名println(int)

查看PrintStream的API( System.out是一个PrintStream )。 它有方法println()println(boolean)println(char)println(char[] ), println(double)println(float)println(int)println(long)println(Object)println(String) 。 这称为方法重载 (向下滚动以查找有关方法重载的部分)。

如果要从整数文字创建一个String ,可以在其周围加上引号( String s = "123"; )或使用Integer.toStringString s = Integer.toString(123); )或String.valueOfString s = String.valueOf(123); )。

我假设您不打印不打印,java为每种数据类型都有一个println函数,因此您可以在布尔值,整数,字符串等上调用println,它将选择正确的函数。 当然,您不能将整数分配给字符串变量,因为它们是不同的类型。