java的String=a; a==null和a.equals(null)这两个判断有什么区别

如题所述

a==null;这个里面的a 是String对象的引用,(就相当于c++的指针),a==null 是判断这个引用a是不是指向一个String对象。
a.equal(null) 这个是判断a这个引用所指向的String对象的内容是不是为空。a只是String对象的引用而已。追问

"String对象的内容是不是为空",是指什么,“ ”这样算是空吗?还是哪种表达才是空呢?

追答

String类型可以看做字符数组,"String对象的内容是不是为空"就是指这个字符数据是不是为空

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-13
首先明确的一点,String的equals方法默认是重写了Object类的方法,具体是实现是
public boolean equals(Object paramObject) {
if (this == paramObject) {
return true;
}
if (paramObject instanceof String) {
String str = (String) paramObject;
int i = this.count;
if (i == str.count) {
char[] arrayOfChar1 = this.value;
char[] arrayOfChar2 = str.value;
int j = this.offset;
int k = str.offset;
while (i-- != 0) {
if (arrayOfChar1[(j++)] != arrayOfChar2[(k++)])
return false;
}
return true;
}
}
return false;
}
也就是说,对于a.equals(null)来说,第一步也会判断this == null,这里的this就是a。上面的代码已经说明,当equals传入的参数是null的时候,和a==null的效果是一样的。
但是如果传入的参数不是null,那么a==b只能判断a和b是否指向同一个java对象,而a.equals(b)能判断a和b指向的java对象的字符串内容是否一样。本回答被提问者和网友采纳
第2个回答  2014-01-27
a==null,判断引用变量a是否是空引用;a.equals(null)判断字符串a内容是否是空
第3个回答  2014-01-27
对于equals和==的区别你可以百度一下

通常对于字符串比较应该使用equals,对于数值的比较用==
相似回答