String s = null; System.out.println(s); String s = null; System.out.println(s); 请问:为什么这样不会报错,而是输出null。 不是会调用null的toString方法吗,不会报空指针的错误吗?null 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有调用toString方法,楼主可以试试String s = null; System.out.println(s.toString());就明白了 String str = null;System.out.println(str.toString());Exception in thread "main" java.lang.NullPointerException如果调用toString()方法会报异常System.out.println(str);这个没有调用toString方法。 public class Str { public static void main(String []args) { String str = null; System.out.println(str); System.out.println(str.toString()); }}console:nullException in thread "main" java.lang.NullPointerException at Str.main(Str.java:6)为什么会是这样的结果,这个你要问设计JDK的人员。源代码中的代码如下:public void println(String x) { synchronized (this) { print(x); newLine(); } }public void print(String s) { if (s == null) { s = "null"; } write(s); }当传入的字符串==null时,打印null。所以不会出错报null指针异常。只有在转换的时候会报。 学java的有必要去看JDK源代码吗 没有报异常是因为jdk里print,println方法对参数的处理。楼上有讲解。 .toString()。这样就会报错了。 关于BufferedImage创建大小的问题 高分求助如何使一个connection一直保持打开的状态? 急--初级:为什么要带后缀才能运行? Java中有什么文本编辑组件能实现超链接? 菜鸟的一段代码 请能人帮看看 哪里错了 注释很清楚 语法问题 怎样去掉连接下面的线呢?(续) SSL,你用过吗??? java多个线程是共享同一个对象的方法??(多线程的局部变量) 一道关于import的位置的题 java方法传参问题 lucene返回关键字在文中的位置,关键字在文章中出现的次数~~~
String str = null;
System.out.println(str.toString());Exception in thread "main" java.lang.NullPointerException
如果调用toString()方法会报异常System.out.println(str);这个没有调用toString方法。
public static void main(String []args) {
String str = null;
System.out.println(str);
System.out.println(str.toString());
}}console:
null
Exception in thread "main" java.lang.NullPointerException
at Str.main(Str.java:6)为什么会是这样的结果,这个你要问设计JDK的人员。源代码中的代码如下:public void println(String x) {
synchronized (this) {
print(x);
newLine();
}
}
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}当传入的字符串==null时,打印null。
所以不会出错报null指针异常。只有在转换的时候会报。
这样就会报错了。