Java中的equals是十分重要的,和= =要区别开来,现在小结其主要内容,而且要将 = =和 equals列为重要的对比概念来学习

1、声明格式
    public  boolean equals(Object obj)

其比较规则为:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false.

比如以下两个对象animal1和animal2,引用不同的对象,因此用==或equals()方法比较的结果为false;而animal1和animal3变量引用同一个DOg对象,因此用= =或者equals()方法比较的结果为true.

Animal  animal1=new Dog();
   Animal  animal2=new  Cat();
   Animal animal3=animal1;

则animal1==animal2   (FALSE)
   animal1.equals(animal2)  (false)

animal1==animal3   (true)
   animal1.equals(animal3)   (true)

而JDK类中有一些类覆盖了oject类的equals()方法,比较规则为:如果两个对象的类型一致,并且内容一致,则返回true,这些类有:
java.io.file,java.util.Date,java.lang.string,包装类(Integer,Double等)

比如
Integer  int1=new Integer(1);
Integer int2=new Integer(1);

String str1=new String("hello");
String str2=new String("hello");

int1==int2   输出:false,因为不同对象
int1.equals(int2)   输出:TRUE

str1==str2   (false)
str1.equals(str2)   (true)
  当然,可以自定义覆盖object类的equals()方法,重新定义比较规则。比如,下面Person类的equals()比较规则为:只要两个对象都是Person类,并且他们的属性name都相同,则比较结果为true,否则返回false

public class Person{
   private String name;
   public Person(String name)
  {
     this.name=name;
   }
public boolean equals(Object o)
{
  if (this==0) return true;
if (!o instanceof Person) return false;
final Person other=(Person)o;
 if (this.name().equals(other.name()))
    return true;
else
  return false;
}

}

注意,在重写equals方法时,要注意满足离散数学上的特性

1、自反性   :对任意引用值X,x.equals(x)的返回值一定为true.
2    对称性:   对于任何引用值x,y,当且仅当y.equals(x)返回值为true时,x.equals(y)的返回值一定为true;
3    传递性:如果x.equals(y)=true, y.equals(z)=true,则x.equals(z)=true
4   一致性:如果参与比较的对象没任何改变,则对象比较的结果也不应该有任何改变
5   非空性:任何非空的引用值X,x.equals(null)的返回值一定为false

Java中的equals学习小结的更多相关文章

  1. java中继承关系学习小结

    继承:把多个类中同样的内容提取出来.定义到一个类中,其它类仅仅须要继承该类.就能够使用该类公开的属性和公开的方法.   继承的优点:提高代码的复用性.提高代码的可维护性.让类与类之间产生关系,是多态存 ...

  2. java 中的equals()小结

    转载自http://www.cnblogs.com/jackyrong/archive/2006/08/20/481994.html Java中的equals是十分重要的,和= =要区别开来,最近在看 ...

  3. 【Java学习笔记之二十九】Java中的"equals"和"=="的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: String str1 = new String(" ...

  4. Java 中的 equals() 和 hashCode()

    equals() 和 hashCode() 在 Object 类中以本地方法的形式存在,Java 中所有的类都继承了 Object 类,因此所有的类中都包含了这两个方法.这两个方法在 Java 开发中 ...

  5. Java中的equals()和hashCode() - 超详细篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的equals()和hashCode() - 详细篇>,希望对大家有帮助,谢谢 文章纯属原创,个人总结难免有差错,如果有,麻烦在评论 ...

  6. 浅谈Java中的equals和==(转)

    浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...

  7. 浅谈Java中的equals和==

    浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...

  8. Java中的equals和hashCode方法

    本文转载自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要 ...

  9. Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)

    Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例  原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...

随机推荐

  1. Canvas-图片填充-预加载

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. angular的过滤器

    angular有一些自带的过滤器,今天我就来写一下. 首先还是先把导入一个angular插件,再在我们的js中把模块和控制台写上(别忘了在html中写入模块名和在body中写入控制台名,当然控制台名可 ...

  3. CoordinatorLayout Behaviors使用说明[翻译]

    翻译与:Intercepting everything with CoordinatorLayout Behaviors 使用过Android Design Support Library的小伙伴应该 ...

  4. 三种系统监控工具对比:top vs Htop vs Glances

    首先启用 EPEL Repository: yum -y install epel-release 启用 EPEL Repository 後, 可以用 yum 直接安裝 Htop: yum -y in ...

  5. docker,构建nginx反向代理tomcat

    Nginx实现负载均衡是通过配置nginx.conf来实现的,nginx.conf的全部内容如下: user nginx; worker_processes 1; error_log /var/log ...

  6. 转!java操作redis

    package sgh.main.powersite; import java.util.ArrayList; import java.util.HashMap; import java.util.I ...

  7. 如何做好部门以及公司的文档管理、知识管理以及情报管理?——By Me

    之前针对部门的文档管理开发平台进行过一次需求调研分析,对于实现方案与我们的实际需求之前的满足情况系统梳理了一下,我觉得对于有类似需求的团队或者公司应该有可以借鉴的地方,发到这里供大家参考.如有不正之处 ...

  8. 安全技能树简版 正式发布——BY 余弦(知道创宇)

    之前留意到知道创宇发布的<知道创宇研发技能表>,对自己有很大的启发,最近听说知道创宇的余弦大神创业了(题外话),还发布了<安全技能树简版V1>,仔细研读之后总体感觉不那么复杂了 ...

  9. 深入ff and ffbase

    用ff 包读取一个csv 文件 >options(fftempdir = [二进制文件存放的位置]) >file_chunks <- read.csv.ffdf(file=”big_ ...

  10. SqlAlchemy基本

    安装SQLAlchemy: $ easy_install sqlalchemy 数据库表是一个二维表,包含多行多列 [ ('1', 'Michael'), ('2', 'Bob'), ('3', 'A ...