public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// str1,str2 在字符串缓冲池中寻找,发现有相等值的abc
// 则把str1的引用赋给了str2,即两个引用都指向abc一个地址(都指向同一块字符串池)
// str3为new 新开辟了一个地址, equals表示值相等(内容相等), == 表示地址相等(比较两个对象是否指向同一引用,也就是地址的比较)
// java.lang 中的类都重写了 equals方法,
// 如果自定义类,要让equals正确必须重写此方法(因为equals默认是比较句柄的-相当于地址)
String str1 = "abc";
String str2 = "abc";
String str3 = new String("abc");
System.out.println(str1.equals(str2));// true
System.out.println(str1 == str2);// true
System.out.println(str1.equals(str3));// true
System.out.println(str1 == str3);// false
}
/**
* hashcode java规范要求对于同一个对象每次生成的hashcode必须相同!
*/
/**
*
* hashcode这个方法是用来鉴定2个对象是否相等的。
*
* 那你会说,不是还有equals这个方法吗?
*
* 不错,这2个方法都是用来判断2个对象是否相等的。但是他们是有区别的。
*
* 一般来讲,equals这个方法是给用户调用的,如果你想判断2个对象是否相等,你可以重写equals方法,然后在代码中调用,
* 就可以判断他们是否相等了。简单来讲,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等。
* 举个例子,有个学生类,属性只有姓名和性别,那么我们可以认为只要姓名和性别相等,那么就说这2个对象是相等的。
*
* hashcode方法一般用户不会去调用,比如在hashmap中,由于key是不可以重复的,
* 他在判断key是不是重复的时候就判断了hashcode这个方法,而且也用到了equals方法。
* 这里不可以重复是说equals和hashcode只要有一个不等就可以了!所以简单来讲,
* hashcode相当于是一个对象的编码,就好像文件中的md5,他和equals不同就在于他返回的是int型的,
* 比较起来不直观。我们一般在覆盖equals的同时也要覆盖hashcode,让他们的逻辑一致。举个例子,
*
* 还是刚刚的例子,如果姓名和性别相等就算2个对象相等的话,那么hashcode的方法也要返回姓名的hashcode值加上性别的hashcode值,
* 这样从逻辑上,他们就一致了。
*
* 要从物理上判断2个对象是否相等,用==就可以了。
*
*
*/
}
分享到:
相关推荐
==运算符和Equals()方法区别,从网上找到的,大家看一看吧~
关于Java中==的用法与equals的用法,醉重要的是比较它们的不同之处
java中比较值大小,==和equals的区别,基本数据类型和引用数据类型比较值方法
equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码: String a=new String("foo"); String b=new String("foo"); 两条...
知识点 比较运算符==和equals方法的比较 知识点 比较运算符==和equals方法的比较
接触c#一年了,一直没搞懂“==”和equals之间的具体区别,今天特意研究了一番,终于豁然开朗了,高兴中!给大家分享
简单介绍java中的“==”和equals
String中==与equals区别验证
详细介绍和讲解Java中的==和equals区别
主要介绍了java基础之 “==”与“equals”区别详解,需要的朋友可以参考下
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
NULL 博文链接:https://tonysmith.iteye.com/blog/1440129
java中的比较运算符== 与 equals()方法 值类型、引用类型
前言 对于开发的程序员小伙伴,...equals:在Object中模式采用==比较,通常会重写 String对象重写了 equals,比较的是变量值 从上面我们笼统的来说明了一下两者的不同,那么接下来我们看看具体的区分 对象类型的比较
Equals是比较两个变量是否指向同一个对象。 public class Person { public Person(string name) { this.Name = name; } public string Name { get; set; } } static void Main(string...
能够加强对java中equals与==区别的理解。
书上的一个例子说明了“==”与equals()方法的区别。 以下是例子代码(摘自《Java核心技术》卷一): Employee.java package equals; import java.time.*; import java.util.Objects; /* * 一个{@Employee}代表
主要介绍了Java中==与equals的区别小结,本文总结结论:== 与 equals()比较的内容是不同的,equals()方式是String类中的方法,它用于比较两个对象引用所指的内容是否相等,而 == 比较的是两个对象引用的地址是否相等,...
equals与==之间的区别,记事本详解
equals与==的区别?equals和==有什么区别? Java解惑系列之一--equals和==之间究竟有什么区别 稍微学过一些java的同学都可能在网络上看到这样的一道题: 在java语言当中,equals和==之间究竟有什么区别? 而这道...