2)==和equals

==和equals

 

1.如果比较对象是值变量:只用==

2.如果比较对象是引用型变量:

==:比较两个引用是不是指向同一个对象实例。

equals:

首先Object类中equals的实现是直接调用了==操作。

一个自定义类继承自Object且没有重写equals方法,那么其equals操作也是与Object类一样,仅仅是直接调用==操作。

如果一个类重写过equals方法(或者继承自一个重写过equals方法的类),那么效果与==操作不同

如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址, 因为自定义的类是继承于object,而object中的equals就是用==来实现的。

API里的类大部分都重写了equals方法。例如String类

String类型(String本身就是一个类):

==:比较两个str是否是指向同一个对象实例。

equals:比较两个str中的内容是否相同

检查两个引用型变量是否属于同一个Class:instanceof

System.out.println((obj1 instanceof Student) && (obj2 instanceof Student))

时间: 2024-10-08 03:33:18

2)==和equals的相关文章

equals方法的使用

对于字符串来说,使用"=="运算符和"equals()"方法来比较,其比较方式不同.==运算符用于比较两个变量本身的值,即两个对象在内存中的首地址:equals()方法比较的是两个字符串中所包含的内容是否相同.对于非字符串类型的变量来说,==运算符和equals()方法都是用来比较所指对象在堆内存中的首地址,即比较两个类类型的变量是否指向同一个对象. 例 class Test { int x=1; } public class ep3_1{ public stati

浅谈Java中的equals和==(转载)

在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 4 System.out.println(str1==str2); 5 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一样?==和equals方法之间的区别是什么?如果在初学Java的时候这个问题不弄清楚,就

Java的equals()和==的区别

Java中==就是用来比较值是否相等,equals()是父类Object提供的一个方法equals(Object obj),在Java API文档中提到: The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this met

Object.equals() 方法

Object.equals() 方法: 1 public class EqualsTest1 { 2 public static void main(String[] args) { 3 //Cat c1 = new Cat(); 4 //Cat c2 = new Cat(); 5 //System.out.println(c1 == c2);//result:false 6 Cat c3 = new Cat(1,2,3); 7 Cat c4 = new Cat(1,2,3);//在重写equa

Java学习之equals和hashcode的关系

两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 答:不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同.Java对于eqauls方法和hashCode方法是这样规定的:(1)如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同:(2)如果两个对象的hashCode相同,它们并不一定相同.当然,你未必要按照要求去做,但是如果你违背了上述原则就会

hashcode和equals

在java中,万物皆对象,所有的对象都继承于Object类,Object类有两个方法equals和hashCode.equals一般用来比较两个对象的内容是否相等,而hashCode一般用来提高容器的查询效率. public native int hashCode(); public boolean equals(Object obj) { return (this == obj); } equals在没有重写的情况下和==是一样的,对于值类型,比较的是值,对于引用类型则比较的是对象的首地址.

重写equals和hashCode方法的示例

如果一个类有自己特有的"逻辑相等",且需要以此进行比较时,那么就需要重写equals方法. 在Object的规范中,重写equals方法有下面几条通用约定: 自反性. x.equals(x) == true 对称性.if   y.equals(x) == true , then  x.equals(y) == true 传递性.if   x.equals(y) == true y.equals(x) == true , then x.equals(z) == true 一致性.如果比较

java之"equals"和"=="的区别

java中的数据类型有基本数据类型和引用数据类型. 基本数据类型包括:int,char,float,long,double,boolean,byte,short(注:String不是基本数据类型):基本数据类型之间的比较用"==". 引用数据类型包括:Integer,Char,Float,Long,Double,Boolean,Byte,Short.引用数据类型"=="比较的是他们在内存中的存放地址,equals比较的是值是否相等. 对于String和Integer

看Java中==、equals、hashCode的来龙去脉

我有一个哥们去参加了面试,面试官这样问一个Java问题: 你说一下java对象的equals方法调用什么方法呢?我这个哥们想了想,回答说"应该是比较的引用".听了这个答案之后,那个面试官摇头晃脑的说:"不对,你回答的不对,equals方法调用的是hashCode方法".于是乎,我那个技术还不错的哥们就悲壮地栽在这道题目上了. 今天晚上,西安历史上少有的热,那就好好总结一下这个题目的来龙去脉好了,也方便给后面的朋友们提个醒,不要栽在这么简单的问题上.你说这个面试官回答

java重写equals方法(重点讲解)

为什么equals()方法要重写? 判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象.这样我们往往需要重写equals()方法. 我们向一个没有重复对象的集合中添加元素时,集合中存放的往往是对象,我们需要先判断集合中是否存在已知对象,这样就必须重写equals方法. 怎样重写equals()方法? 重写equals方法的要求: 1.自反性:对于任何非空引用x,x.equals(x)应该返回tru