码迷,mamicode.com
首页 > 编程语言 > 详细

原!! java直接打印一个对象时,并不是直接调用该类的toString方法 ,而是会先判断是否为null,非null才会调用toString方法

时间:2016-08-13 22:38:33      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

网上看了好多java直接打印一个对象时,直接调用该类的toString方法 。

但是:

  Object obj=null;
  System.out.println(obj);//没有报错
  System.out.println(obj.toString());//报空指针异常
System.out.println(obj);既然也是直接调用toString方法,为什么不报错???

原因总结如下:

1.调用Object类的toString方法,必须保证object不是null值,否则将抛出NullPointerException异常。

2.System.out.println()源码如下:(即会先判断是否为null,非null才会调用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();
    }
  public void print(String s) {
	if (s == null) {
	    s = "null";
	}
	write(s);
    }

  

相关详细博文介绍:http://m.blog.csdn.net/article/details?id=44727535

原!! java直接打印一个对象时,并不是直接调用该类的toString方法 ,而是会先判断是否为null,非null才会调用toString方法

标签:

原文地址:http://www.cnblogs.com/wuyun-blog/p/5768876.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!