代码如下:
package com.lcp.testJava;
public class TestHashCode {
/**
* @param args
*/
private int i;
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 1;
int b = 1;
System.out.print(a==b);
String s = new String("abcde");
String s1 = "abcde";
String s3 = "abcde";
String s2 = new String("abcde");
System.out.println(s==s1);
System.out.println(s.equals(s1));
System.out.println(s2==s1);
System.out.println(s==s2);
System.out.println(s1==s3);
System.out.println("s.hashCode is: " + s.hashCode());
System.out.println("s1.hashCode is: " + s1.hashCode());
System.out.println("s2.hashCode is:" + s2.hashCode());
System.out.println(s.equals(s2));
System.out.println(s1.equals(s2));
}
}
结果如下:
truefalse
true
false
false
true
s.hashCode is: 92599395
s1.hashCode is: 92599395
s2.hashCode is:92599395
true
true
1.基本类型“==”比较的是值,a,b值相等,所以进宪“==”操作时强果为true.
2.s是new出来,不管内存之间有没有“abcde”,JVM都会new个新的“abcde”;
s1是在编译时期就具有的 字符串常量,“abcde”是存在于栈区的,这不同于new关键字new出来的都是放在堆 区 的。
所以“==”操作比较的是二个不同的对象,结果为false;
s.equals(s1)在String类型中比较的是值,s,s1的值都为“abcde”,所以结果为ture.
3.明显 s3是s1的一个拷贝,“==” 与“equals”都为ture.
4.s,s1,s2 它们的hashcode完全是一样, 实际是可以是指内容一样。
对象相等,hashcode一定相等
反之则不是: hashcode相等,对象不一定相等。
总结一下:
==或!= 在比较基本类型时,比较的是值。 在比较【对象】时,比较的是对象的引用。如果想比较对象的值,就要用equals方法了。
分享到:
相关推荐
"Java中equals、hashcode和==的区别" Java 中 equals、hashcode 和==的区别是 Java 编程语言中一个经常遇到的问题。这三个概念都是用来比较对象的,但是它们之间存在着本质的区别。 首先,==号是Java中的一个...
在Java编程语言中,了解如何正确使用`==`和`equals()`方法是非常关键的,因为它们在比较对象和基本类型时有不同的行为。下面将详细解释这两个方法的工作原理、使用场景以及一些常见误区。 首先,`==`运算符主要用于...
Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.
在Java编程语言中,`==`和`equals()`方法是用来比较对象之间关系的两种常见方式,但它们在使用上有着显著的区别。 首先,`==`运算符主要用于比较基本类型(如int、char、byte等)的值是否相等,或者比较引用类型...
有许多人学了很长时间的Java,但一直不明白hashCode方法的作用以及equals()和==的区别,我来解释一下吧。首先,想要明白hashCode的作用,你必须要先知道Java中的集合。总的来说,Java中的集合(Collection)有两类,...
==运算符、equals方法和intern方法都是Java中的重要概念,它们之间的区别和联系是Java程序设计语言中的一個非常重要的知识点。 知识点: 1. ==运算符:比较两个对象是否是同一个对象。 2. equals方法:比较两个...
本篇文章将深入剖析“==”运算符和equals()方法的区别与联系,帮助你在Java的笔试和面试中更好地应对相关问题。 首先,“==”运算符在Java中用于比较基本类型变量的值是否相等,例如int、char或boolean。对于引用...
在Java编程语言中,`equals()` 和 `hashCode()` 方法是两个非常重要的概念,尤其是在处理对象比较和哈希表(如 `HashMap` 和 `HashSet`)时。`equals()` 方法用于判断两个对象是否相等,而 `hashCode()` 方法则用于...
Java 中的 hashCode 和 equals 方法详解 本文详细介绍了 Java 中的 hashCode 和 equals 方法,探讨了这两个方法的作用、实现机制和使用场景。通过对 hashCode 和 equals 方法的深入分析,我们可以更好地理解 Java ...
其中,equals和hashCode方法是Java容器集合中两个非常重要的方法,本文将详细介绍这两个方法,并结合ArrayList、Vector和LinkedList三个常见的容器集合。 一、equals方法 equals方法是Java中用于比较两个对象是否...
在Java编程语言中,`equals()` 和 `hashCode()` 方法是对象的基本组成部分,它们在很多场景下都发挥着至关重要的作用。这两个方法与对象的相等性比较和哈希表(如HashMap、HashSet)的运作紧密相关。这篇博客将深入...
在Java编程语言中,比较运算符`==`和`equals()`方法是用来检查两个对象是否相等的,但它们之间存在显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,我们来看`==`运算符。它主要用于基本数据类型的比较...
这是因为“equals()”和“hashCode()”在Java集合框架中扮演着重要角色,特别是当对象被添加到HashSet或HashMap时,正确的“equals()”和“hashCode()”实现可以确保对象的唯一性和查找效率。 此外,还需要注意“==...
在Java编程语言中,`hashCode()`和`equals()`方法是对象身份验证的关键组成部分,它们主要用于对象的比较和哈希表(如HashMap、HashSet等)的操作。理解这两个方法的工作原理对于编写高效和可靠的代码至关重要。 ...
### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`和`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...
在Java编程语言中,`equals()` 和 `hashCode()` 方法是Object类中的两个核心方法,所有类都默认继承自Object类。这两个方法在处理对象比较和集合操作时起着至关重要的作用。当我们创建自定义类并需要对对象进行精确...
hashCode() 和 equals() 方法是 Java 中两个非常重要的方法,它们之间存在着非常重要的关系。正确地实现这些方法对于 Java 开发人员来说是非常重要的,以便提供更深层次的语义可比性和提高效率。
【面试】中提到的几个关键知识点集中在对象比较、equals()和hashCode()方法的使用以及它们之间的关系上。这些概念在Java编程中至关重要,特别是在处理集合类和比较对象时。 1、**hashCode与equals两者之间的关系**...
在Java编程语言中,`equals()`和`hashCode()`方法是对象的基本组成部分,它们主要用于对象的比较和存储。这两个方法在`java.lang.Object`类中定义,因此所有的Java类都默认继承了这两个方法。然而,根据具体的应用...
本文介绍了Java语言不直接支持关联数组,可以使用任何对象作为一个索引的数组,但在根Object类中使用 hashCode()方法明确表示期望广泛使用HashMap。理想情况下基于散列的容器提供有效插入和有效检索;直接在对象模式...