Date date = null;System.out.println("Date=" + date);
执行如上java代码,结果为:Date=nullSystem.out.println("Date=" + date .toString());
执行如上java代码,报异常:java.lang.NullPointerExceptionWhy?

解决方案 »

  1.   

    因为用空(null)去调用属性或方法。
    null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常
      

  2.   

    要调用java对象的方法,确保此对象的实例不为空,不然就报空指针异常。
      

  3.   

    首先String的+号是重载的运算符,
    其实质是:
    * <p>
     * The Java language provides special support for the string
     * concatenation operator (&nbsp;+&nbsp;), and for conversion of
     * other objects to strings. String concatenation is implemented
     * through the <code>StringBuilder</code>(or <code>StringBuffer</code>)
     * class and its <code>append</code> method.然后你的问题就很容易理解了,
    package A;public class NullTest {    /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO XWu Auto-generated method stub
            StringBuilder sb = new StringBuilder("");
            sb.append((Object)null);  //1
            //sb.append(((Object)null).toString()); //2
            System.out.println(sb);
            
        }}第一个append当然是可以执行的
    第二个append是nullpoint异常。和你直接用+的结果一致
      

  4.   

    看println的实现吧:    public void println(Object x) {
    synchronized (this) {
        print(x);
        newLine();
    }
        }    public void print(Object obj) {
    write(String.valueOf(obj));
        }
        public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
        }
      

  5.   


    楼主不太理解 Date date=null 和Date date=new Date()的区别  Date date只是表示一个Date类型的引用变量 =null时 没有指向堆里面的Date() 如何调用对象的方法?
      

  6.   

    我知道toString() 方法是Date公开的方法。 date=null,怎么理解? 比如在堆栈分配上 .  Date date=null 表示未初始化date?
    另一个问题是, System.out.println("Date=" + null); 中 "Date=" + null怎么理解?