equals()与==在Java中的区别

equals()与在Java中的区别

在Java中,有两种方法可以确定两个对象是否相等:.equals()方法和运算符。.equals()函数比较两个对象的内容。操作符比较两个对象的引用。

当你使用new运算符创建一个对象时,它会被分配一个指定的内存位置在堆中。例如,假设两个对象具有相同的数据。即使这两个对象在内存的不同部分中,.equals()方法仍将返回true。

如果两个对象被存储在内存中的完全相同位置,操作符将返回true。

.equals()和之间的区别

方面 .equals() 方法 运算符
定义 .equals() 方法是 java.lang.Object 类的一部分。 运算符是 Java 中的比较运算符。它适用于原始数据类型和对象。
比较重点 .equals() 用于与对象的内容进行比较。例如,比较两个字符串的字符或两个整数的数值。 运算符检查两个对象是否引用同一内存位置,从而确定它们是否为同一个对象。
行为定制化 可以为域对象中的 .equals() 方法定义自定义行为。例如,可以为何时认为两个员工对象相等设置自定义条件。 运算符的行为无法改变。
条件修改 可以覆盖 .equals() 方法以指定对象相等的条件。 运算符的行为保持静态和不可改变。

.equals() 方法

在Java中,String的equals()函数会根据数据/内容来比较两个字符串。如果两个字符串的所有内容都匹配,它返回true。如果没有字符匹配,它返回false。

.equals()

代码创建了线程和字符串对象,然后使用”“比较它们的引用,所有比较都返回false。它使用.equals()来比较字符串内容,对于内容匹配的字符串返回true。

算法

  • 步骤1:生成一个名为”t1″的新线程实例。

  • 步骤2:创建另一个名为”t2″的新线程实例。

  • 步骤3:将”t2″的引用赋给”t3″线程引用。

  • 步骤4:创建两个新的String实例:”s1″和”s2″,并赋予内容”Tutorials”。

  • 步骤5:使用”“运算符,检查”t1″和”t2″是否引用相同。打印此比较的结果(false)。

  • 步骤6:再次使用”“运算符比较”t1″和”t2″是否引用相同。打印此比较的结果(false)。

  • 步骤7:使用”“运算符检查引用”s1″和”s2″是否相同。打印此比较的结果(false)。

  • 步骤8:使用”equals”方法比较”t1″是否等于它自身。打印此比较的结果(true)。

  • 步骤9:使用”equals”方法比较”s1″的内容是否等于”s2″的内容。打印此比较的结果(true)。

  • 步骤10:程序结束。

示例

public class Tutorialspoint {
    public static void main(String[] args)
    {
        Thread t1 = new Thread();
        Thread t2 = new Thread();
        Thread t3 = t2;

        String s1 = new String("Tutorials");
        String s2 = new String("Tutorials");

        System.out.println(t1 == t2);
        System.out.println(t1 == t2);
        System.out.println(s1 == s2);

        System.out.println(t1.equals(t1));
        System.out.println(s1.equals(s2));
    }
}

输出

false
false
false
true
true

运算符

所有原始类型,如布尔类型,都受到相等运算符的影响。对于对象类型,相等运算符也适用。

下面代码中的输出表明,对不同的整数、字符和浮点数进行比较时返回 false。但对相同的布尔值进行比较时返回 true。

算法

  • 步骤 1:使用 “” 运算符比较整数值 30 是否等于整数值 40。打印此比较的结果(false)。

  • 步骤 2:看看字符 ‘x’ 是否等于字符 ‘y’。我们使用 “” 运算符进行比较。打印此比较的结果(false)。

  • 步骤 3:使用 “” 运算符比较字符 ‘x’ 是否等于浮点数值 35.0。打印此比较的结果(false)。

  • 步骤 4:使用 “” 运算符比较布尔值 true 是否等于布尔值 true。打印此比较的结果(true)。

  • 步骤 5:程序结束。

示例

public class Test {
    public static void main(String[] args)
    {

        System.out.println(30 == 40);


        System.out.println('x' == 'y');


        System.out.println('x' == 35.0);


        System.out.println(true == true);
    }
}

输出

false
false
false
true

结论

equals()方法比较两个对象的内容。而运算符比较对象的内存地址。我们已经通过各个方法的示例来理解这些区别。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程