equals函数

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

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

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);
	}
}

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

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

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

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

Object函数中的equals方法:

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);
	}
}

通过对比我们发现调用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));
	}
}

时间: 2024-10-13 10:50:02

equals函数的相关文章

equals函数的作用

1.equals函数在哪 2.equals函数的作用 3.equals函数方法的复写 1.equals函数在哪 包含在Object类, 而Object是所有类的父类, 因此所有类都有equals函数 2.equals函数的作用 首先讲"=="的概念, 再讲equals, 不能混淆这两个 编辑器使用sublime_Text代替Notepad, 界面确实很好看 1 class User{ 2 String name; 3 int age; 4 } 1 class Test{ 2 publi

java equals函数

java中所有类都是Object的子类,Object中实现了equals方法,使用时一般要对其进行重载. 不进行重载时 public class JavaTest { public static void main(String[] args) { boolean result; Student stu1=new Student("cjc",24); Student stu2=new Student("cjc",24); result=stu1.equals(stu

26.equals函数的作用

equals函数在什么地方 所有的类当中都会有equals函数 equals函数的作用 “==”操作符的作用:判断两个引用是否指向堆内存当中的同一块地址 publicclassTest{ publicstaticvoid main(String args []){ User u1 =newUser(); User u2 =newUser(); User u3 = u1; boolean b1 = u1 == u2; boolean b2 = u1 == u3; System.out.printl

完美重写Java的equals函数

首先看一下String的equals()函数的重写: 1 /** 2 * Compares this string to the specified object. The result is {@code 3 * true} if and only if the argument is not {@code null} and is a {@code 4 * String} object that represents the same sequence of characters as th

第38节:hashCode()与toString()与equals()函数的作用,内部类和匿名内部类

hashCode()和toString() Hash算法是把任意长度的数据通过hash算法成为散列值 hashCode() public int hashCode(){ int result = 10; result = 2*result + age; result = 2*result + name.hashCode(); return result; } toString() public String toString(){ String result = "age:"+age+

【Java】整理关于java的String类,equals函数和比较操作符的区别

初学 Java 有段时间了,感觉似乎开始入了门,有了点儿感觉但是发现很多困惑和疑问而且均来自于最基础的知识折腾了一阵子又查了查书,终于对 String 这个特殊的对象有了点感悟大家先来看看一段奇怪的程序: public class TestString {       public static void main(String[] args) {           String s1 = "Monday";           String s2 = "Monday&qu

java中的==与equals()

==用法 1.比较基本数据类型,如果两个值相同,则结果为true 2.比较引用时,如果引用指向内存中的同一对象,结果为true equals()用法 函数原型:public boolean equals(Object obj) 1.当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false 既然是两者有同样的作用,为什么还要弄出一个equals()方法来呢.因为==运算符不允许我们进行覆盖,也就是说它限制了我们的表达. 示例: 1 /** 2 * @author xiao

Java hashCode() 和 equals()的若干问题

原文:http://www.cnblogs.com/skywang12345/p/3324958.html 本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() 与 == 的区别是什么? 3 hashCode() 的作用是什么? 4 hashCode() 和 equals() 之间有什么联系? 第1部分 equals() 的作用 equals() 的作用是 用来判断两个对象是否相等. equals() 定义在JDK的Object.java中.通过判断两个对

一次性搞清楚equals和hashCode

前言 在程序设计中,有很多的“公约”,遵守约定去实现你的代码,会让你避开很多坑,这些公约是前人总结出来的设计规范. Object类是Java中的万类之祖,其中,equals和hashCode是2个非常重要的方法. 这2个方法总是被人放在一起讨论.最近在看集合框架,为了打基础,就决定把一些细枝末节清理掉.一次性搞清楚! 下面开始剖析. public boolean equals(Object obj) Object类中默认的实现方式是  :   return this == obj  .那就是说,