分以下几步进行讨论
一、equals方法对于普通的类是比较引用是否相等,和==效果一样,因为equals 方法是继承Object下来的,我们看下
Object中equals方法的写法:
public boolean equals(Object obj) {
return (this == obj);
}
二、对于基本数据类型的包装类,euqals方法源代码如下:Integer举例:
包装类中重写了equals方法
//比较的是值,不是引用,对于基本数据类型的包装类“==”比较的才是引用
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
对于基本数据类型,那么==比较的就是值了,这个都很好理解
那么我们看一下String这个类中的equals方法,String中也重写了equals方法,具体代码如下:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
String这个类的equals方法比较特殊,它先比较引用,如果引用相等,那么返回值就是true,如果引用不相等,
那么再比较值,如果值相等,那么返回值也是true,只有当引用和值都不相等的情况下,返回的才是false
关于String中的intern()方法,此方法返回的始终是String pool中的字符串,我也在以前的文章说过,String的创建过程,如果String pool中不存在此字符串,那么创建一个新的返回,如果有的话,就直接返回此对象,
遵循对于任何两个字符串 s
和 t
,
当且仅当 s.equals(t)
为 true
时,s.intern() == t.intern()
才为 true
。
当然如果你写一个自己的类的话,也可以自己重写equals方法,用自己的方法来实现自己想要的功能
分享到:
相关推荐
如果我们想要让 s2 也引用同一个对象,可以使用 intern() 方法: public class TestString { public static void main(String[] args) { String s1 = "Monday"; String s2 = new String("Monday"); s2 = s2....
这也解释了为什么我们不能使用 == 运算符来比较两个字符串对象的值,而应该使用 equals 运算符。 在 Java 中,还有一个字符串缓冲池的概念。当我们使用字符串常量时,Java 会在缓冲池中查找相同值的对象,如果找到...
在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象是否相等的关键概念。理解它们的区别对于编写出正确、健壮的代码至关重要。 首先,`==`运算符用于基本类型(如int, char, boolean)的比较,...
Java 中的equals和==的区别 Java 是一种面向对象的编程语言,其中有两种数据类型:基本数据类型和引用数据类型。基本数据类型包括整数...在编写 Java 代码时,需要根据具体情况选择使用 == 运算符或 equals 方法。
在 Java 中,equals() 方法和 == 操作符都是比较操作符,但是它们的用法和区别非常重要。equals() 方法用于比较对象的内容是否相等,而 == 操作符用于比较变量的值或地址值。在编写 Java 程序时,需要正确地使用这两...
在Java编程语言中,比较运算符`==`和`equals()`方法是用来检查两个对象是否相等的,但它们之间存在显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,我们来看`==`运算符。它主要用于基本数据类型的比较...
在 Java 中,比较值大小有两种方法:== 和 equals,这两个方法的使用场景和比较规则不同,下面我们将详细探讨它们的区别。 基本数据类型和引用数据类型 在 Java 中,有两种数据类型:基本数据类型和引用数据类型。...
本篇复习将重点讨论String类中的`equals()`方法和`==`运算符的区别,这对于理解对象比较和字符串操作至关重要。 首先,`==`运算符在Java中用于比较基本类型(如int、char)的值,而在比较对象时,它实际上是检查两...
因此,当我们需要比较字符串的内容时,应该使用`equals`方法,而不是`==`运算符。 在Java中,`==`运算符和`equals`方法有着不同的比较方式。`==`运算符比较引用地址,而`equals`方法比较对象的实际内容。在比较对象...
"=="和"equals()"是两种常用的字符串比较方法,但它们之间存在一定的区别和使用场景。这篇博客将深入探讨这两个方法的工作原理以及何时应该使用它们。 首先,"=="运算符在Java中主要用于比较基本类型变量的值,如...
在Java编程语言中,`equals()` 和 `==` 都用于比较对象,但它们的用法和含义有所不同。本文将详细解析这两个操作符在Java中的区别,并通过具体的例子进行阐述。 1. `==` 操作符: `==` 在Java中主要用来比较基本...
String 类的 equals 方法用于比较两个字符串的内容是否相同,而 == 操作符用于比较两个字符串变量的值是否相同。 例如,以下代码将比较两个字符串变量的值是否相同: ```java String s1 = "Monday"; String s2 = ...
在Java编程语言中,`==`和`equals()`方法是用来比较对象之间关系的两种常见方式,但它们在使用上有着显著的区别。 首先,`==`运算符主要用于比较基本类型(如int、char、byte等)的值是否相等,或者比较引用类型...
在Java编程语言中,`equals()`方法和`==`运算符是用于比较对象的两种不同方式,它们在处理不同类型的数据时有不同的行为。了解这两者的区别对于编写正确的代码至关重要。 `==`运算符: 1. `==`用于比较基本类型的...
同时,需要注意的是,如果自定义了类并且想要比较对象内容,记得要同时重写`equals()`和`hashCode()`方法,以保持两者的一致性,这在使用HashMap、HashSet等容器时尤为重要。 此外,当我们涉及到数组或者集合时,`...
这就是为什么在上面的例子中,使用 equals(Object) 方法比较 s1 和 s2 的结果是 true,而使用 == 运算符比较的结果是 false。 因此,== 运算符比较的是两个对象的引用,而 equals(Object) 方法比较的是两个对象的...
而`equals()`方法则是对象的比较方法,通常重写自`Object`类,用于比较对象的内容是否相等。 对于`String`类,`equals()`方法按照内容进行比较,如果两个`String`对象包含的字符序列相同,`equals()`返回`true`。`=...
- 对于字符串和包装类,应优先使用`equals`方法进行比较,以确保得到正确的结果。 理解`==`与`equals`之间的区别对于编写正确且高效的Java代码至关重要。希望本文能帮助您更好地掌握这一概念,并在实际开发中避免...