==和equals() 的比较

Rochelle ·
更新时间:2024-09-20
· 781 次阅读

==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 ()) ; } }
作者:菲儿啊



equals

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章