package oop;
public class TestToString {
public static void main(String[] args) {
String s = "abc";
s = null;
System.out.println(s);//null
System.out.println("====================");
System.out.println(s.toString());//NullPointerException
}
}
当s不是null,这两种输出方式没有明显差别,当s为null时,调用方法自然报空指针异常,但是直接打印会显示null值,这是因为println的print中有保护机制,
println:
public void println(String x) {
synchronized (this) {
print(x);
newLine();
}
}
print:
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
print中会有一个比较,如果字符串是null值,那就直接输出null.