• java中.equals和==的区别?


    Java中的equals是十分重要的,和= =要区别开来,孙卫琴的JAVA面向对象编程一书对这个做了阐述,现在小结其
    主要内容,而且要将 = =和 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类中有一些类覆盖了object类的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

  • 相关阅读:
    Android开发 使用 adb logcat 显示 Android 日志
    【嵌入式开发】向开发板中烧写Linux系统-型号S3C6410
    C语言 结构体相关 函数 指针 数组
    C语言 命令行参数 函数指针 gdb调试
    C语言 指针数组 多维数组
    Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用
    C语言 内存分配 地址 指针 数组 参数 实例解析
    CRT 环境变量注意事项
    hadoop 输出文件 key val 分隔符
    com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Too many connections
  • 原文地址:https://www.cnblogs.com/0927wyj/p/5045705.html
Copyright © 2020-2023  润新知