在C语言中,我们经常使用==判断两个参数是否相等,但是在java中,我们却不能乱用这个操作符,因为java中涉及很多类的操作,使用==也许表达的意思和程序员所想不一致。下面以一个例子来说明==和java中的equals函数的区别:
package Thinking;
class Text{
String text;
public Text(String text){
this.text=text;
}
}
public class Compare{
public static void main(String[] args){
int n=10;
int m=10;
System.out.println(n==m);
Text a=new Text("hust");
Text b=new Text("hust");
Text c=a;
String s1=new String("hust");
String s2=new String("hust");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
System.out.println(a==b);
System.out.println(a.equals(b));
System.out.println(a==c);
System.out.println(a.equals(c));
System.out.println(a.hashCode());
System.out.println(b.hashCode());
System.out.println(c.hashCode());
}
}//output:
true
false
true
false
false
true
true
5184781
33311724
5184781
实际中,基本类型的比较使用的是“==”,只要值一样,结果就为true。虽然有些类对“==”进行了重载,但表达的意思不一样。众所周知,对类进行操作时都是引用变量,上述a和c指向同一个实例对象,而b虽然和a的内容一样,但不是同一个实例对象。
对象中“==”表示两者是否指向同一个对象,由于Text类并没有覆盖equals和hashcode方法。所以a.equals(b)和a==b的结果都是false,而String类覆盖了equals和hashcode方法,所以s1.equals(s2)为true,但两者毕竟指向不同对象,所以s1==s2为false。
通过上面的比较可以看出a.equals(c)为true,同时两者的hashcode也是一样,这是因为equals为true的两个类,两者的hashcode也是一样的。String类在覆盖equals函数时,同样覆盖了hashcode函数,这是基本要求。相等的两个类,hashcode同样相等,但反之则不然。
分享到:
相关推荐
### Java中的比较运算符==与equals()方法 在Java编程语言中,经常需要对变量进行比较,这涉及到了两种常见的比较方式:`==`运算符和`equals()`方法。这两种方式有着本质的区别,并且适用于不同类型的数据。下面将...
"Java中的==和equals方法比较" 在Java中,`==`和`equals`是两种不同的比较方法,前者比较引用地址,而后者比较对象的实际内容。 首先,让我们来看看`==`运算符的用法。`==`运算符可以用来比较基本数据类型和引用...
在Java编程语言中,`==` 运算符与 `equals()` 方法被广泛用于比较对象,尤其是当处理字符串(`String` 类)时。这两者之间的区别是理解Java内存管理和对象引用的关键。以下是对给定代码片段中所展示概念的详细解析。...
Java 中 equals 和 == 的区别 Java 中的 equals 和 == 是两个不同的概念,很多开发者容易混淆它们。理解这两个概念的区别是非常重要的,因为它们对编程的正确性和性能都有很大的影响。 首先,我们需要了解 Java ...
计算机后端-Java-Java核心基础-第14章 面向对象06 15. 总结==与equals().avi
"运算符和Equals()方法区别" 在C#语言中,`==`运算符和`Equals()`方法都是用来比较两个对象是否相等,但是它们之间存在着很大的区别。 对于值类型来说,`==`运算符和`Equals()`方法的行为是一致的,都会比较两个...
Java 中的 equals 方法是一个比较对象内容的方法,其声明格式是 public boolean equals(Object obj),比较规则为:当参数 obj 引用的对象与当前对象为同一个对象时,就返回 true,否则返回 false。例如: ```java ...
在Java编程语言中,了解`==`和`equals()`的区别是非常重要的,这涉及到对基本类型和对象的正确比较。下面我们将详细探讨这两个操作符的工作原理及其在不同情况下的使用。 首先,`==`操作符主要用于比较基本类型的...
默认情况下,“equals()”方法的行为与“==”相同,即比较对象的引用。然而,为了比较对象的内容,许多类(如String、Integer)都重写了“equals()”方法,使其能够比较对象的属性值。 例如,在String类中,...
在Java编程语言中,`equals`方法与`==`操作符是进行对象比较时最常用的两种方式,但它们之间存在着显著的区别。理解这些差异对于正确地处理对象比较至关重要。 ### `==` 操作符 `==`操作符主要用于比较两个基本...
### Java中的`==`与`equals`方法的区别详解 在Java编程中,比较对象的相等性是一个常见的需求,但很多初学者对于`==`运算符与`equals`方法的区别容易混淆。本文将深入探讨两者之间的差异,以及它们在不同场景下的...
Java 中 equals 和 == 的区别 Java 中的 equals 和 == 是两个不同的运算符,它们之间的区别是非常重要的。 首先,我们需要了解 Java 中的内存模型。在 Java 中,变量可以分为两种:基本类型(primitive type)和...
C# 中的 == 和 equals 比较 在 C# 编程语言中,`==` 和 `equals` 是两个常用的比较运算符,但它们之间有很大的区别。 堆和栈的区别 在理解 `==` 和 `equals` 之前,我们需要了解堆和栈的区别。堆是一种动态分配的...
Java 中的equals和==的区别 Java 是一种面向对象的编程语言,其中有两种数据类型:基本数据类型和引用数据类型。基本数据类型包括整数类型、浮点数类型、字符类型、布尔类型等,共有八种;而引用数据类型则包括 ...
【Java面试题】equals与==的区别
在Java编程语言中,了解`==`和`equals()`的区别是非常关键的,因为它们在处理不同类型的数据时有不同的行为。这两个运算符在比较基本数据类型(如int、char)时表现相同,但当涉及到对象时,它们的行为就有所不同。 ...
"equals(Object) 与 == 的区别" .equals(Object) 与 == 的区别是 Java 编程语言中一个常见的问题,许多初学者都感到困惑。下面我们将详细地解释这两个概念之间的区别。 首先,让我们看一个例子。假设我们有两个 ...
用此blog记录我学习的过程,文中若有不恰当的地方,还望友情指出互相学习。 一、== 主要有两种比较形式 基本数据类型(也称原始数据类型):byte,...Java中所有的类都继承自Object类,equals()方法就在Object类中被
在Java编程语言中,`==`和`equals()`方法是用来比较对象之间关系的两种常见方式,但它们在使用上有着显著的区别。 首先,`==`运算符主要用于比较基本类型(如int、char、byte等)的值是否相等,或者比较引用类型...
equals(父类是object,所以每个对象都会有equals): ojbect的 (源代码的149行):出厂默认的话equals等价于 == string 类重写equals:比较的是每一个字符是否相等 hashCode(重写equals就一定要重写hashCode...