JAVA equals, ==


都是判相等,对于基本变量没区别,只是对动态变量(即对象)有区别:

  1. ==:值相等。对于对象引用,即判断引用值也就是地址是否相等。即如果Object a,b,则 a==b 表示引用a和b的地址是否相等。
  2. equals():是Object的方法,其实现是 return this == inputObject。但是常常会被覆盖,如String,Integer等都覆盖了该方法,判断对象引用所指向的内容是否相等
  • a==b 则 a.equas(b) 一定正确,但反之则不一定,要看对象a对于equals的具体实现。如果采用默认的object实现,则反之亦然。
  • 有规范要求,如果a.equals(b),则 a.hashcode() == b.hashcode(),因此如果要覆盖重写equals方法,要注意修改hashcode()方法,以满足规范。
时间: 2024-10-25 07:52:54

JAVA equals, ==的相关文章

Java equals和toString用法

1.代码 User.java public class User{ String name; int age; public User(String name,int age){ this.name = name; this.age = age; } public boolean equals(Object obj){ if(this == obj) return true; boolean b = obj instanceof User; if(b){ User u = (User)obj;

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

java equals和==的区别

大概说equals和==都比较的是什么: 1. boolean tem = a == b; 首先==比较的肯定是地址,从堆栈的角度说也就是说==比较的是栈上面的内容.因为栈是用来存放地址或是java中八大基本类型中自动变量的字面值(自动变量就是用int a = 1;这种形式来定义的变量).如果是自动变量比较值的话肯定是用==来比较,因为equals()是一个方法,所以必须由对象调用才可以用于比较.而自动变量既不是类的实例也不是类的引用所以不能用equals()方法. 2.boolean tem

Java ==,equals,hashCode,解析(适合初学者阅读)

1.对于equals()和hashCade()方法他们都是位于Java.lang.object类下的方法,又因为所有的类都继承于objct类,所以所有的类都可以使用这两个方法. 2.对于equals()方法,首先知道他是用于比较的,这里我吧源码打出来(注意:我这打出的源码是Object类中的equals()方法的源码) public boolean equals(Object obj){ return (this==obj); } 附录:this关键字我在这里进行简单的说明一下吧,对于初学者对t

重写java equals 方法的建议

@Overridepublic boolean equals(Object otherObject) { //1.检测this 与 otherObject 是否引用同一个对象 if (this == otherObject) return true; //2.检测otherObject 是否为null, 如果为null,返回false if (null == otherObject) return false; //3.比较this 与 ohterObject 是否属于同一个类 if(getCl

Java equals方法详解

Java的Object类中定义了equals方法,Object类中的equals方法源代码如下,从源代码中可以看出Object类中的equals方法是用来返回判断两个对象是否指向同一个地址 public boolean equals(Object obj) { return (this == obj); } Ojbect类中的equals方法会被子类重写,例如String会重写equals方法,String的equals方法源代码如下, public boolean equals(Object

java equals 和 "==" 比较

java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类)   当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个

Java == ,equals 和 hashcode 的区别和联系

1. ==  java中的==是比较两个对象在JVM中的地址.比较好理解.看下面的代码: public class ComAddr{ public static void main(String[] args) throws Exception { String s1 = "nihao"; String s2 = "nihao"; String s3 = new String("nihao"); System.out.println(s1 ==

Java equals的一个坑

public class StringEqualsObject { public static void main(String[] args) { String name="Tom"; Person p=new Person(name); System.out.println(name.equals(p)); System.out.println("p.toString():"+name.equals(p.toString())); System.out.prin

java :equals()和hashcode()方法的结合使用

哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: 1 public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现. 为何Object类需要这样一个方法?它有什么作用呢?今天我们就来具体探讨一下hashCode方法. 一.hashCode方法的作用 对于包含容器类型的程序设计语言来说,基本上都会涉及到h