equals和==的区别

本文详细探讨了Java中equals方法和==运算符的区别。==用于比较基本数据类型变量的值,对于引用数据类型则比较对象的内存地址。而equals方法默认行为与==相同,但在String、Date等类中被重写以比较对象内容。在自定义类中,通常需要重写equals方法以实现预期的比较逻辑。
摘要由CSDN通过智能技术生成

equals和==的区别

==的使用:

package test;

public class test1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//比较的是基本数据类型的变量,比较两个变量保存的数据是否相等(不一定要类型相同)
		
		int i = 10;
		int j = 10;
		double d = 10.0;
		System.out.println(i == j);//true
		System.out.println(i == d);//true
		
		boolean b = true;
//		System.out.println(i == b);//编译不通过
		
		char a = 10;
		System.out.println(a == i);//true
		
		char c1 = 'A';
		char c2 =65;
		System.out.println(c1 == c2);//true
	
		
		//比较的是引用数据类型变量,比较的是对象的地址值是否相等,
		//即是否指向的是堆空间的同一个地址
		Person p1 = new Person();
		Person p2 = new Person();
		System.out.println(p1 == p2);//false
	}

}

class Person{
	
}


equals:

package test1;

import java.util.Date;

public class test2 {
	public static void main(String[] args) {
		Person p1 = new Person();
		Person p2 = new Person();
		System.out.println(p1 == p2);//false
		/*
		 * equals只是一个方法,并非运算符,只能适用于引用数据类型
		 * Object中equals的定义
		 * public boolean equals(Object obj){
		 * 		return (this == obj)
		 * }
		 * Object类中定义的equals()和==的作用是相同的,
		 * 比较两个对象的地址值是否相同,即是否指向同一地址值
		 * 像String、data、File、包装类等都重写了Object类中的equals方法,重写以后比较的不是
		 * 两个引用的地址值是否相同,而是比较两个对象的实体内容是否相同。
		 * 通常情况下,我们重写的equals方法:比较两个对象的实体内容是否相同,比较两个对象的属性是否相同
		 * 方法,
		 * */
		String str1 = new String("str");
		String str2 = new String ("str");
		System.out.println(str1 == str2);//false
		System.out.println("--------------");
		System.out.println(p1.equals(p2));//false
		System.out.println(str1.equals(str2));//true
		
		Date date2 = new Date(32432525324L);
		Date date1 = new Date(32432525324L);	
		System.out.println(date1.equals(date2));//true
	}
}
class Person{
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值