也谈equals与==

equals相等,==也是表示相等,在很多书籍里面,推荐使用equals不推荐使用==,

在C#中相等型可分为两类,值相等性和引用相等型,如果比较两个值类型数据相等就是值相等性,比较引用类型相等就是引用相等性。

对于引用类型相等,指的是应用类型所指向对象的地址相等则为引用相等性

然而我们在经常写实体类的实例化时会有这样的情形

Class A=new Class (){intValue=1,stringvalue="aaaa"}

Class B=new Class(){intValue=1stringvalue="aaaa"}

实体类A,B所指向内存地址不同,但是实体类内的值相等,如果此时我们用equals或者==去判断的话返回就是为false,但是此时实体类内部值数据是相等的,遇到这样的情况equals方法作用就来了

重写equals方法,判断内部值相等则两个实体类相等。

时间: 2024-11-29 03:36:37

也谈equals与==的相关文章

浅谈equals和==

在java中equals和==都是用来作比较的,可是你知道他们之间有什么区别和联系吗? 首先,在Object类中,本质上equals和==都是一样的,如果查看源码,你会发现这里面equals的内部实现就是==: public boolean equals(Object obj) { return (this == obj); } 如果是比较两个Object对象的大小,直接用==就可以了. == 1.判断比较的两个对象是否是同一个对象,内存地址是否相同.2.比较的两个对象必须是同一类型的数据,否则

浅谈equals重写

equals的简单了解: Object中的equals方法用于检测一个对象是否等于另外一个对象. Object类中,判断两个对象是否引用同一个对象实现equals方法,源码如下: public boolean equals(Object obj) { return (this == obj); } 从源码可以看出,对于复合数据类型之间进行equals比较,在没有重写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(=

浅谈equals和==的区别

这个问题在面试或者源码分析都经常出现,先不着急,让我们来了解一下Java中的数据类型. java中的数据类型分为: 基本数据类型和引用数据类型. 基本数据类型 4种整数类型:int.long.byte.short 2种浮点数类型:float.double 1种字符类型:char 1种布尔类型:boolean 引用数据类型 类 接口 数组 一.== == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象.比较的是真正意义上的指针操作. 对于

【转】浅谈Java中的equals和==

浅谈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中的equals和==

浅谈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中的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时,可能会经常碰到下面的代码: 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有什么区别? 网上普遍的回答都是:==比较的是内存地址,equals比较的是值. 其实这种回答是很不标准的,稍微标准一点的回答应该JDK自带的一些类对equals的实现各不同,例如 Object对象的equals的定义是这样的: public boolean equals(Object obj) { return (this == obj); } 所以在Object中==和equals是没有任何区别的. 但在String中,重写的equ

浅谈==和equals

我之前一直没怎么研究过这两个比较规则,稀里糊涂的知道怎么比较,也一直没犯过错,一时犯晕,呼呼,突然间就像研究下, 简言之: == 是比较两个对象地址的值,着重于值对象的比较,值的比较用equals比较值引用对象其比较结果一定正确的,但不建议使用,显得不正规吧 实质上值引用是在栈中存储的,每个值在栈中是唯一的,栈中地址也是唯一的,比较的时候就是比较的地址值,因此如果两个或者多个引用对象的值相同,其指向栈中的 值地址必定是相同的 根据以上继续分析,equals是比较的两个或者多个对象的栈中存储的内容