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

转载地址:http://zhidao.baidu.com/link?url=TiUvedxlF4YqktZl8shEigzYnSYA4hrixykEggfs7JbmSbl7bACBcpt2HpRiwA9c9GIv-62b-TAtqVQNkZWFbr9ldGNCYU65LqWgoAIygkm
首先明确的一点,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对象的字符串内容是否一样。

你可能感兴趣的:(Java)