System.out.println("Date=" + date);
执行如上java代码,结果为:Date=null
System.out.println("Date=" + date .toString());
执行如上java代码,报异常:java.lang.NullPointerException
Why?
9 个解决方案
#1
因为用空(null)去调用属性或方法。
null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常
null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常
#2
要调用java对象的方法,确保此对象的实例不为空,不然就报空指针异常。
#3
首先String的+号是重载的运算符,
其实质是:
然后你的问题就很容易理解了,
第一个append当然是可以执行的
第二个append是nullpoint异常。
和你直接用+的结果一致
其实质是:
* <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异常。
和你直接用+的结果一致
#4
可以定义但是不能使用。
#5
看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();
}
#6
无视吧,没看到还有“+”操作
#7
同意2楼!
#8
楼主不太理解 Date date=null 和Date date=new Date()的区别 Date date只是表示一个Date类型的引用变量 =null时 没有指向堆里面的Date() 如何调用对象的方法?
#9
我知道toString() 方法是Date公开的方法。
date=null,怎么理解? 比如在堆栈分配上 . Date date=null 表示未初始化date?
另一个问题是, System.out.println("Date=" + null); 中 "Date=" + null怎么理解?
date=null,怎么理解? 比如在堆栈分配上 . Date date=null 表示未初始化date?
另一个问题是, System.out.println("Date=" + null); 中 "Date=" + null怎么理解?
#1
因为用空(null)去调用属性或方法。
null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常
null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常
#2
要调用java对象的方法,确保此对象的实例不为空,不然就报空指针异常。
#3
首先String的+号是重载的运算符,
其实质是:
然后你的问题就很容易理解了,
第一个append当然是可以执行的
第二个append是nullpoint异常。
和你直接用+的结果一致
其实质是:
* <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异常。
和你直接用+的结果一致
#4
可以定义但是不能使用。
#5
看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();
}
#6
无视吧,没看到还有“+”操作
#7
同意2楼!
#8
楼主不太理解 Date date=null 和Date date=new Date()的区别 Date date只是表示一个Date类型的引用变量 =null时 没有指向堆里面的Date() 如何调用对象的方法?
#9
我知道toString() 方法是Date公开的方法。
date=null,怎么理解? 比如在堆栈分配上 . Date date=null 表示未初始化date?
另一个问题是, System.out.println("Date=" + null); 中 "Date=" + null怎么理解?
date=null,怎么理解? 比如在堆栈分配上 . Date date=null 表示未初始化date?
另一个问题是, System.out.println("Date=" + null); 中 "Date=" + null怎么理解?