== 和 equals 到底有何不同 (二)

equals方法是object类提供的一个实例方法。所以所有引用变量都可以调用该方法来判断是否与其他引用变量相等。但是这个方法判断两个对象相等的标准与==没有区别,都要求两个引用变量指向同一个对象时才返回true。所以object提供的equals方法没有太大的实际意义。这就产生了重写 equals 方法。关于如何重写equals()方法,这里先不做介绍。

 

有些人提出质疑,说String的很多变量都可以用equals方法比较是否相等。 那是因为String已经重写了object的equals方法。String的equals()方法判断两个字符串是否相等的标准是:只要两个字符串所包含的字符序列相同,那么返回true,否则返回false。例如:

public static void main(String[] args) {

	String str1 = new String("Fire");
	String str2 = new String("Fire");
	System.out.println(str1 == str2);
	System.out.println(str1.equals(str2));
}

打印结果:

false
true

 

而下面这个例子:

public static void main(String[] args) {

	Persion p1 = new Persion();
	Persion p2 = new Persion();
	System.out.println(p1.equals(p2));
}

 显然打印 false 。

 

但是应当注意下面这种情况:

public static void main(String[] args) {
	String str1 = "Fire";
	String str2 = "Fire";
	String str3 = new String("Fire");
	String str4 = new String("Fire");

	System.out.println(str1 == str2);
	System.out.println(str3 == str4);
	System.out.println(str1 == str3);
	System.out.println(str3.equals(str4));
	System.out.println(str1.equals(str4));
}

 

打印结果为:

true
false
false
true
true

 

str1 == str2 返回true。这一点,我也不太理解。不知道String直接用"Fire"赋值与new出来的细节差别在哪里。等以后理解了,再做进一步解释。也请懂的人不吝赐教...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值