日期:2014-05-20  浏览次数:20805 次

javaSE问题。。你的基础有多好!!简单问题。。
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 void print(String s) {
if (s == null) {
    s = "null";
}
write(s);
    }

------解决方案--------------------
去看看 System.out.println() 这个函数的源码就非常清楚了
------解决方案--------------------
JDK自带,去目录里面找这个文件: src.zip

顺便贴给你吧:

    public void println(String x) {
synchronized (this) {
    print(x);
    newLine();
}
    }

    public void print(String s) {
if (s == null) {
    s = "null";
}
write(s);
    }

------解决方案--------------------
引用:
Quote: 引用:

看一下源代码不就知道了?
    public void print(String s) {
if (s == null) {
    s = "null";
}
write(s);
    }

这个才是我想要的答案(这样打印语句调用的是toString()方法就没错了).请问源代码是怎么查看的.

eclipse里面可以按住CTRL+鼠标左键点你要查看的方法
------解决方案--------------------
引用:
Quote: 引用:

看一下源代码不就知道了?
    public void print(String s) {