java的String=a; a==null和a.equals(null)这两个判断有什么区别
4个回答
展开全部
首先明确的一点,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对象的字符串内容是否一样。
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对象的字符串内容是否一样。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a==null,判断引用变量a是否是空引用;a.equals(null)判断字符串a内容是否是空
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对于equals和==的区别你可以百度一下
通常对于字符串比较应该使用equals,对于数值的比较用==
通常对于字符串比较应该使用equals,对于数值的比较用==
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询