码迷,mamicode.com
首页 > 其他好文 > 详细

equals函数

时间:2014-11-18 00:22:29      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   使用   sp   java   数据   div   2014   

equals函数在Object类当中,而Object类是所有类的父类,所以所有的类里面都有equals函数。

“==”操作符之前用于比较两个基本数据类型的值是否相等,而对于引用数据类型,“==”操作符用于判断两个引用是否指向堆内存中的同一个对象。

bubuko.com,布布扣

class User{
	String name;
	int age;
}
class Test{
	public static void main(String args[]){
		User u1 = new User();
		User u2 = new User();
		User u3 = u1;
		boolean b1 = u1 == u2;
		boolean b2 = u1 == u3;
		System.out.println(b1);
		System.out.println(b2);
	}
}

bubuko.com,布布扣

 

equals函数用来比较两个对象的内容是否相等

对象的内容相等通常需要满足下面两个条件:

1、对象的类型相同(用instanceof比较)

2、两个对象的成员变量的值完全相同

Object函数中的equals方法:

bubuko.com,布布扣

class Test{
	public static void main(String args[]){
		User u1 = new User();
		User u2 = new User();
		User u3 = u1;
		boolean b1 = u1.equals(u3);
		System.out.println(b1);
	}
}

bubuko.com,布布扣

通过对比我们发现调用Object的equals方法和使用“==”比较两个对象是否相等没有区别,所以我们需要根据上述两个条件复写equals方法

class User{
	String name;
	int age;
	
	public boolean equals(Object obj){
		if(this == obj){
			return true;
		}
		boolean b = obj instanceof User;
		if(b){
			User u = (User)obj;
			if(this.age == u.age && this.name.equals(u.name)){
				return true;
			}
			else{
				return false;
			}
		}
		else{
			return false;
		}
	}
}

首先判断this和obj是否指向堆内存中的同一个对象,是的话就返回true,再判断obj是不是User类型的,不是的话返回false,是的话就进行向下转型,再比较this和u的成员变量是否相等。
基本数据类型的成员变量比较使用"==",引用数据类型的成员变量比较用equals

class Test{
	public static void main(String args[]){
		User u1 = new User();
		User u2 = new User();
		User u3 = new User();
		u1.name = "zhangsan";
		u1.age = 12;
		u2.name = "lisi";
		u2.age = 13;
		u3.name = "zhangsan";
		u3.age = 12;
		System.out.println(u1.equals(u2));
		System.out.println(u1.equals(u3));
	}
}

bubuko.com,布布扣

equals函数

标签:blog   http   ar   使用   sp   java   数据   div   2014   

原文地址:http://www.cnblogs.com/chavez-wang/p/4104644.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!