==和equals() 的比较

==equals ()都是用于相等型判断的操作符

== 操作符用来判断两个引用是否指的同一个对象,或两个简单类型的值是否相等
即: [ == 比较值类型数据,比较的是值, 而引用类型对象比较的是地址]

equals() 方法用来判断对象的内容是否相等,相等的条件在该类中定义

Object类的 equals() 方法直接用 == 实现,不适用!! !
所以,通常override(重写/覆写)java.lang.0bject 类的中equals()方法
按照自己的需要,在equals()方法中定义对象相等的含义。

String.equals ()
注意:当此方法被重写时,通常有必要重写hashCode方法,以维护hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

package com.demo; 
class Pig{
}
class Person {
	String pid; // 身份证号
	String name;
	int age;
	public Person (String pid,String name, int age) {
		this.pid = pid;
		this.name = name ;
		this.age = age;
	}
	@Override
	public String toString() {
		return pid+"\ t"+name+"\t"+age;
	}
	
	/**
	*重写equals方法,用来自定义两个对象相等的含义
	*/
	public boolean equals (Object obj) {
		if (obj==nu1l) {
			return false;
		}
		if(this==obj) { //判断是否是同一个引用
			return true ;
		}
		//if(! (obj instanceof Person)) {
		if (this.getClass() !=obj .getClass()) { //判断是否是同一类型.
			return false;
		}
		//将obj转换为Person类型
		Person person = (Person)obj; //类型转换异常
		return this.pid.equals (person.pid) ;
	}
	/**
	*维护hashCode方法的常规协定,该协定声明相等对象必须具有相等的哈希码
	*/
	public int hashCode() { 
		return this.pid.hashCode() ;
	}
}

public class Test {
	public static void main (String[ ] args) {
		Person p1 = new Person ("123456789", "张三",20) ;
		Person p2 = new Person ("123456789", "李四",20) ;
		//Person p2= null;
		//Pig p2 = new Pig() ;
		//System. out. println(p1==p2) ;
		System.out.println (pl.equals (p2)) ;
		System.out.println (p1.hashCode () ) ;
		System.out.println (p2 .hashCode ()) ;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菲儿啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值