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对象的字符串内容是否一样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值