“==”与“equals”

1、“”==“”比较的是值是否相等或者引用类型是否相等;

package other;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 输出false,比较对象,new对象重新开辟了内存空间,两者内存不再相等
		Integer a = 100;
		Integer b = new Integer(100);
		System.out.println(a == b);
		// 输出ture,此时两个对象内存地址一致
		Integer c = 100;
		Integer d = 100;
		System.out.println(c == d);
		// 输出false,自动拆箱过程中Integer.valueOf有限定值,超出部分会进行new,其他基本数据类型同样有限定值
		Integer e = 200;
		Integer f = 200;
		System.out.println(e == f);
		// 输出true,拆箱后为基本数据类型,比较两个值
		System.out.println(e.intValue() == f.intValue());
	}

}

2、"euqals"比较的是二者内容是否相等

package other;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String a = "test";
		String b = "test";
		String c = new String("test");
		//返回true,二者内容一致
		System.out.println(a.equals(b));
		//返回true,二者内容一致,不受内存地址影响
		System.out.println(a.equals(c));
	}

}

3、进行比较时要注意非空判断;重写equals时要重写hashCode,因为两个值相等不代表hashCode即哈希码相等,相反hashCode相等,对象一定相等;以HashSet为例,新加入的对象优先判断hashCode是否相等,如果相等再调用equlas进行判断是否真的相等,以此提升equlas效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值