Date date = null;System.out.println("Date=" + date);
执行如上java代码,结果为:Date=nullSystem.out.println("Date=" + date .toString());
执行如上java代码,报异常:java.lang.NullPointerExceptionWhy?
执行如上java代码,结果为:Date=nullSystem.out.println("Date=" + date .toString());
执行如上java代码,报异常:java.lang.NullPointerExceptionWhy?
null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常
其实质是:
* <p>
* The Java language provides special support for the string
* concatenation operator ( + ), 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异常。和你直接用+的结果一致
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();
}
楼主不太理解 Date date=null 和Date date=new Date()的区别 Date date只是表示一个Date类型的引用变量 =null时 没有指向堆里面的Date() 如何调用对象的方法?
另一个问题是, System.out.println("Date=" + null); 中 "Date=" + null怎么理解?