API中的Object之equals方法

标签: API中的Object之equals方法 equals方法的重写 Object类 equals方法 API
24人阅读 评论(0) 收藏 举报
分类:

API 中的 Object 之 equals 方法


1、==    等于运算符
        A:可以比较基本类型:比较的就是值是否相同。

        B:可以比较引用类型:比较的就是地址值是否相同。

2、public boolean equals(Object obj)

        1)指示其他某个对象是否与此对象“相等”。equals 方法在非空对象引用上实现相等关系。
        2)看源码:这个方法,默认情况下,比较的是地址值。
                public boolean equals(Object obj) {
                    return (this == obj) ;
            }

        3)一般来说,比较地址值得意义不大。所以,需要重写该方法:一般都是用来比较一个类的两个对象的成员变量值是否相等。

        4)重写Student类中的equals( ) 方法:

            @Override
            public boolean equals(Object obj) {
                //    return super.equals(obj);
                //    这里要改进,需要比较对象的成员变量值是否相同!所以,这里比较的就是name和age。但是name是字符串类型,比较不能使用 ==,需要使用String类的equal( )方法:

        /*        字符串类的方法:public boolean equals(Object anObject):将此字符串与指定的对象比较,当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。

        */
        //    (1)提高程序的效率:
        if(this == obj)
            return true;
        
        //    (2)提高程序的健壮性:
        //    我先判断一下,如果 obj是Student类的对象,可向下转型进行判断,如果不是,直接返回false。
        //    这时,我们需要判断的是对象是否是某个类的对象?
        //    记住格式:    对象名    instanceof    类名
        //    功能:判断该对象名是不是该类名的一个对象。

       // (3)最终版的最好使用自动生成的。

        if(!(obj instanceof Student)) {
            return false;
        }
        
        Student ss = (Student)obj;
        return this.name.equals(ss.name) && this.age == ss.age;

        5)举例子:**************************************************************

package cn.itcast_03;

public class Student {
	private String name;
	private int age;

	public Student() {
		super();
	}

	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		//return super.equals(obj);
		//这里要改进,要比较对象的成员变量是否相同!
		//这里比较的就是name和age。
		//但是name是字符串类型,比较不能使用==,需要使用String类的equal方法。
/*		字符串类的方法:public boolean equals(Object anObject)
 * 		将此字符串与指定的对象比较。
		当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,
		结果才为 true。 
		*/
		
/*		Student ss = (Student)obj;
		if(this.name.equals(ss.name) && this.age == ss.age) {
			return true;
		}else {
			return false;
		}*/
		
		//	提高程序的效率
		if(this == obj)
			return true;
		
		//	提高程序的健壮性
		//	我先判断一下,如果 obj是Student类的对象,可向下转型进行判断,如果不是,直接返回false。
		//	这时,我们需要判断的是对象是否是某个类的对象?
		//	记住格式:	对象名	instanceof	类名
		//	功能:判断该对象名是不是该类名的一个对象。
		
		if(!(obj instanceof Student)) {
			return false;
		}
		
		Student ss = (Student)obj;
		return this.name.equals(ss.name) && this.age == ss.age;
	}
}
*************************************************
package cn.itcast_03;

/**
public boolean equals(Object obj)比较此对象与指定对象。
当且仅当参数不为 null,并且是一个与该对象包含相同 int 值的 Integer 对象时,结果为 true。 

	==
		A:基本类型:比较的就是值是否相同
		B:引用类型:比较的就是地址值是否相同


	public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。 
	equals 方法在非空对象引用上实现相等关系。
	//看源码:这个方法,默认情况下,比较的是地址值。
	    public boolean equals(Object obj) {
        	return (this == obj);
    }
	 * 一般来说,意义也不大。所有,要重写该方法。一般是用来比较对象的成员是否相等。
	 * 
 * @author asus
 *
 */

public class StudentDemo {
	public static void main(String[] args) {
		Student s1 = new Student("qq",11);
		Student s2 = new Student("ss",22);
		System.out.println(s1 == s2);	//false
		Student s3 = s1;
		System.out.println(s1 == s3);	//true
		
		System.out.println("-----------------");
		System.out.println(s1.equals(s2));	//false
		System.out.println(s1.equals(s3));	//true
		
		System.out.println("-----------------");
		Student s4 = new Student("cmm",26);
		Student s5 = new Student("cmm2",26);
		Student s6 = new Student("cmm2",26);
		System.out.println(s4.equals(s5));	//false
		System.out.println(s5.equals(s6));	//true
		
		System.out.println("-----------------");
		Demo o = new Demo();
		System.err.println(s1.equals(o));
		
	}

}

class Demo {
	
}


2、






查看评论

详解Object类的equals方法

详解Object类的equals方法
  • beautiful_face
  • beautiful_face
  • 2017-02-15 16:09:20
  • 427

Object类学习之equals方法重写

我们知道java中所有的类都有equals方法,因为Object类拥有equals方法 object对象中的 public boolean equals(Object obj),指示其他某个对象...
  • zhangqindabendan
  • zhangqindabendan
  • 2017-01-31 22:10:57
  • 3242

Java中Object类的equals方法

所有类都从Object类中继承了equals方法 Object类中equals方法源代码如下: public boolean equals(Object obj) { return this...
  • Rain722
  • Rain722
  • 2016-09-03 20:46:26
  • 4544

java Object对象中hashCode和equals方法学习

学习了多年的java的人对hashCode和equals方法都不是很清楚。 总的来说,Java中的集合(Collection)有两类,一类是List,另一类是Set。前者集合内的元素是有序的,元素可以...
  • lan12334321234
  • lan12334321234
  • 2017-04-11 10:45:43
  • 816

Java Object类中equals()方法与String类中equals()方法的比较

public class AccountTester2 { public static void main(String[] args) { BankAccount2 b1 = new Bank...
  • zhazhabin
  • zhazhabin
  • 2016-02-29 21:41:06
  • 1122

重写Object中的equals方法

在比较两个对象时可以使用==和equals()。==用于比较两个对象的引用地址是否相等,而equals()方法主要用于比较两个对象的内容是否相等。         在Object中已定义了equal...
  • free9277
  • free9277
  • 2013-04-07 17:51:16
  • 1323

Object类之equals方法

class Cat {     int color;     int height;     int weight;     public boolean equals(Object obj...
  • Prince140678
  • Prince140678
  • 2016-07-05 21:56:21
  • 2743

String类中的equals方法与Object类中equals方法的区别

今天在无意中发现一个小知识点,难度不大就是简单和大家分享一下。String str1 = new String("abc"); String str2 = new String("abc"); Sys...
  • qq_36952611
  • qq_36952611
  • 2017-06-02 10:25:19
  • 259

java基础:Object的equals方法

一:看第一个例子 public class Cat1 { private String color; private int height; private int weight...
  • u013628152
  • u013628152
  • 2015-02-01 16:20:32
  • 3594

Object类中的toString(),equals(), hashCode()方法之间的关系

1,在没有重写之前: (1)toString()方法返回的是对象的:Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码...
  • u014756517
  • u014756517
  • 2016-07-17 22:36:58
  • 1126
    个人资料
    持之以恒
    等级:
    访问量: 6万+
    积分: 3218
    排名: 1万+
    最新评论