static String s;
public static void main(String[] args){
System.out.println(s);
}
简单问题 这样会打印出null.很简单
但是不知道我理解的正确不正确,每个打印语句其实调用的是toString()方法.
但是当我把程序改成
static String s;
public static void main(String[] args){
System.out.println(s.toString());
}
就会报异常.
报异常我能理解.但是第一个程序能打印出null,让我想不通.(能打印出null说明,他把null转成了字符串).
请问是怎么回事.内部是怎么把null转成字符串的或者说是用什么方法转的...
public static void main(String[] args){
System.out.println(s);
}
简单问题 这样会打印出null.很简单
但是不知道我理解的正确不正确,每个打印语句其实调用的是toString()方法.
但是当我把程序改成
static String s;
public static void main(String[] args){
System.out.println(s.toString());
}
就会报异常.
报异常我能理解.但是第一个程序能打印出null,让我想不通.(能打印出null说明,他把null转成了字符串).
请问是怎么回事.内部是怎么把null转成字符串的或者说是用什么方法转的...
if (s == null) {
s = "null";
}
write(s);
}
synchronized (this) {
print(x);
newLine();
}
} public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
eclipse里面可以按住CTRL+鼠标左键点你要查看的方法
这里没有调用toString方法。。只有当你想打印一个对象的时候,print调用String.valueOf(Object o)才会调用对象的toString方法
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}这应该是正确的理解.所以说 打印语句调用的是toString方法...
你这结论这么难以纠正?。。你没看见println重载了多次?