equals与==之间的区别
1. 简单数据类型的比较
在java中!简单数据类型的比较是通过==
来进行的。在比较中!只要表达式两边的“值”是相
等的!那么表达式的结果就是true!否则为false。
2. 复杂数据类型的比较
复杂数据类型的比较可以采用“==”,也可以采用"equals"方法进行比较.
如:
Object a = new Object();
Object b = new Object();
a==b 的结果应返回false。因为"=="在比较复
杂数据类型的时候(比较的是是否是同一个对象(
只有两个变量指向的是同一个对象的时候( 才能
返回true. 也就是说(在比较的时候(也比较了对象
的地址信息. 只有地址相同的对象才能够返回
true. 而new运算符在每一次运算时(都将会产生
一个新的对象( 每一个新的对象都有自己的内存
和地址. 所以上文代码的比较结果是false。
如果将代码改写为如下形式:
Object a = new Object();
Object b = a;
那么a==b 的结果将返回true.
如果使用equals()方法,那么应注意该方法是
在哪一个类中实现的, 以及该方法实现的具体形
式.在类Object中,该方法的比较与"=="的比较具
有同样的效果.如下代码将输出false.
public static void main(String args[])
{
Object a = new Object();
Object b = new Object();
System.out.println(a.equals(b));
}
但是,如果比较的数据类型不是Object,而是
其他的数据类型String,StringBuffer 以及各
种包裹类等,这些类中重写了Object类中的函数
equals(),所以在调用equals()方法时将跟据多态
的规则来进行调用,而不一定是要使用Object类
中定义的equals()方法.如下例代码将输出true.
public static void main(String args[])
{
String a = new String("hello");
String b = new String("hello");
System.out.println(a.equals(b));
}
此时调用的是String类中的函数equals(),所
以比较的结果就不同了,它比较时只比较对象的
内容,也就是说,只要字符串中的每一个字符对应
相等,那么字符串对象是相等的,而不管对象的地
址是否相同,对象是否是同一个对象.
上例代码改写为如下形式,将依然返回false.
public static void main(String args[])
{
String a = new String("hello");
String b = new String("hello");
System.out.println(a==b);
}
由此可以看出,equals()方法的重写不影响
"=="的比较规则.
在String类中,除了重写了一个equals()函数
来进行比较外,还有一个函数也可以用于字符串
的比较equalsIgnoreCase(),它的比较规则是只要
字符串对象的对应字符是相等的,那么对象是相
等的,而且,在比较对应的字符的时候,认为大写
字母与小写字母是相等的,如下代码输出true.
public static void main(String args[])
{
String a = new String("HELLO");
String b = new String("hello");
System.out.println(a.equalsIgnoreCase(b));
}
分享到:
相关推荐
Java 中的 equals 和 == 是两个不同的运算符,它们之间的区别是非常重要的。 首先,我们需要了解 Java 中的内存模型。在 Java 中,变量可以分为两种:基本类型(primitive type)和引用类型(reference type)。...
Java 中的 equals 和 == 是两个不同的概念,它们之间的区别是初学 Java 的人很容易混淆的。下面,我们将详细地解释它们之间的区别。 在 Java 中,变量可以分为两种:基本类型(primitive type)和引用类型...
然而,许多开发者不知道它们之间的区别,或者误用它们,导致程序出错。下面我们将详细解释 equals 和 == 的区别,并通过实例代码来加深理解。 equals 操作符 equals 操作符是用于比较两个对象的内容是否相同的。它...
hashcode、equals、==总结1简单总结.txt,他们之间的区别
在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象的工具,但它们之间有着显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,`equals()`方法是`java.lang.Object`类的一个成员方法...
"equals(Object) 与 == 的区别" .equals(Object) 与 == 的区别是 Java 编程语言中一个常见的问题,许多初学者都感到困惑。下面我们将详细地解释这两个概念之间的区别。 首先,让我们看一个例子。假设我们有两个 ...
接着,我们来看`equals()`与`==`在基本类型和其包装类之间的区别。对于基本类型(如`int`),`==`是唯一可用的比较方式,因为基本类型没有`equals()`方法: ```java int a = 3; int b = 4; int c = 3; System.out....
在Java中,`equals()` 和 `==` 是用来比较对象的两种方式,但它们之间存在明显的区别。 `==` 操作符用于比较基本类型变量的值或者引用类型变量的内存地址。在引用类型中,`==` 比较的是两个变量是否指向堆内存中的...
在Java编程语言中,`equals()` 和 `==` 运算符经常被用来比较对象,但它们之间存在着显著的区别。理解这些差异对于编写正确、健壮的代码至关重要。以下是关于 `equals()` 和 `==` 在Java中的详细解释。 首先,`==` ...
### Java中的`==`与`equals`方法的区别详解 在Java编程中,比较对象的...理解`==`与`equals`之间的区别对于编写正确且高效的Java代码至关重要。希望本文能帮助您更好地掌握这一概念,并在实际开发中避免常见的错误。
"=="和"equals()"是两种常用的字符串比较方法,但它们之间存在一定的区别和使用场景。这篇博客将深入探讨这两个方法的工作原理以及何时应该使用它们。 首先,"=="运算符在Java中主要用于比较基本类型变量的值,如...
在C#语言中,`==`运算符和`Equals()`方法都是用来比较两个对象是否相等,但是它们之间存在着很大的区别。 对于值类型来说,`==`运算符和`Equals()`方法的行为是一致的,都会比较两个对象的值是否相等。例如,在上面...
在 C# 编程语言中,`==` 和 `equals` 是两个常用的比较运算符,但它们之间有很大的区别。 堆和栈的区别 在理解 `==` 和 `equals` 之前,我们需要了解堆和栈的区别。堆是一种动态分配的内存区域,由程序员自己申请...
这两者之间的区别是理解Java内存管理和对象引用的关键。以下是对给定代码片段中所展示概念的详细解析。 ### `==` 运算符 `==` 运算符主要用于比较两个变量或对象的引用是否指向内存中的同一位置。换句话说,它检查...
== 号、equals 方法和 hashcode 方法都是用来比较对象的,但是它们之间存在着本质的区别。== 号比较的是对象的内存地址,equals 方法比较的是对象的内容,而 hashcode 方法则是用来唯一标识一个对象的。
在Java编程语言中,`==`和`equals()`方法是用来比较对象之间关系的两种常见方式,但它们在使用上有着显著的区别。 首先,`==`运算符主要用于比较基本类型(如int、char、byte等)的值是否相等,或者比较引用类型...