java中操作符==和equals方法的区别

public class test1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// 对于对象来说
		// 特殊的类,如String、File、Data,使用 == 比较的是对象(对象的地址),使用equals比较的是内容
		//除了特殊的类之外的其他的普通的类的对象,==和equals比较的都是对象(对象的地址)
		//如果你想改变某一个类的equals,不想用equals来比较对象的内存地址,就需要重写equals方法 (结论,记住就行)
		
		Person p1 = new Person();
		Person p2 = new Person();
		System.out.println(p1 == p2); //false
		System.out.println(p1.equals(p2)); // false
		
		p1=p2;
		System.out.println(p1 == p2); //true
		System.out.println(p1.equals(p2)); // true
		
		test1 t = new test1();
//		System.out.println(p1==t);  // 编译错误,==前后的数据类型必须一致
		System.out.println(p1.equals(t));  // false
		
		
		String s1 = new String("abc");
		String s2= new String("abc");
		System.out.println(s1==s2); // false  
		System.out.println(s1.equals(s2)); // true
		
		String s3 = "abc"; 
		String s4 = "abc"; //用字面量创建对象时,只在堆中的常量池中创建一个对象,字符串内容相同,则地址相同
		// 用new创建对象时,常量池中有对象,堆中常量池外也有对象,字面量的方法要比new的方法省内存
		System.out.println(s3==s4); // true  
		System.out.println(s3.equals(s4)); // true
		
		// 总结: == 是比较对象的内存地址
		// equals 对于特殊类String,File,Date比较的是内容(值),对于其他普通的类比较的也是内存地址
	}

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值