public static void main(String args[]) throws Exception
{
String str = null;
// if(" ".equals(str)){
if(str instanceof String){
System.out.println("true");
}else{
System.out.println("false");
}
}
执行结果为:false.
从结果看来:
1.null值什么都不是.即使当初申明了变量类型(如:String str = null).
2.instanceof 是根据变量的实例类型来判断,而与变量申明时的类型并无多大关系.
3.null表示还没new出对象,就是还没开辟空间 “”表示new除了对象,但是这个对象装的是空字符串。
4.可以解释为什么str.equals("")会报异常,而 "".equals(str) 不会报异常(str为null值)。大家根据前面2点,结合java源代码可以理解这一点。这也是我要写这一小段文章的原因。