所以我几天前开始学习Java,并得到了一个问题。对于下一个表达式:
String foo=123;
是不允许的。但是,在 System.out.printIn()
,我们可以使用类似的东西:
int x=5;
System.out.println(x);
既然不允许将整数隐式分配给字符串,为什么上面的表达式有效?任何人都可以给出详细的解释吗?我也想知道我们什么时候可以使用这种隐式的东西,什么时候不能。
可以使用整数调用 println 的原因是该方法已重载。基本上,有多个称为println的方法,其中一个接受整数。
看看这里: 打印流
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)
System
的静态成员out
是一个PrintStream
,它有一个带有签名println(int)
的方法。
查看 API for PrintStream
(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.toString
(String s = Integer.toString(123);
)或String.valueOf
(String s = String.valueOf(123);
)。
我假设你的意思不是println不是printin,java为每个数据类型都有一个println函数,所以你可以在布尔值,整数,字符串等上调用println,它会选择正确的函数。当然,您不能为字符串变量赋值整数,因为它们是不同的类型。