`

Java中equals()和"=="对比

    博客分类:
  • Java
阅读更多
1. Java中equals()方法

Java中equals()方法

1. equals()方法定义在object类中,因此java中的每一个类都具有equals()方法。

2. equals()判断调用它的引用与传进来的引用是否一致,即这两个引用是否指向的是同一个对象。

3. 对于不同类的equals()方法要看具体实现。
   对于object类的equals()方法来说,它等价于“==”。
    public boolean equals(Object obj) {
        return (this == obj);
    }
   对于String类的equals()方法来说,它是判断当前字符串与传进来的字符串的内容是否一致。(对于String对象的相等性判断来说,使用equals()方法,不要使用“==”)
    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

自定义equals方法,继承object类的equals()方法,并且重写了equals()方法。
public class EqualsTest{
    public static void main(String[] args){
        Student2 s1 = new Student2("zhangsan");
        Student2 s2 = new Student2("zhangsan");
        System.out.println(s1 == s2);
        System.out.println(s1.equals(s2));        
    }
}
class Student2{
    String name;
    public Student2(String name){
        this.name = name;
    }
    public boolean equals(Object anObject){
        if(this == anObject){
            return true;
        }
        if(anObject instanceof Student2){
            Student2 student = (Student2)anObject;
            if(student.name.equals(this.name)){
                return true;
            }
        }
        return false;
    }
}
运行结果:
false
true

String与Object中equals()方法的使用对比
public class StringTest{
    public static void main(String[] args){
        String str = new String("aa");
        String str2 = new String("aa");
        System.out.println(str.equals(str2));
        String str3 = "aa";
        String str4 = "aa";
        System.out.println(str3.equals(str4));
        System.out.println("-----------------");
        Object object = new Object();
        Object object2 = new Object();
        System.out.println(object.equals(object2));
        System.out.println(object.equals(object));
    }
}
运行结果:
true
true
-----------------
false
true


2. Java中"=="的使用

Java中"=="的使用

1. 对于基本数据类型:"=="用来比较值的大小是否相等
2. 对于抽象数据类型:"=="用来比较引用是否指向同一个对象,或者说引用地址是否相同

String与Object中"=="方法的使用对比
public class ObjectTest2{
    public static void main(String[] args){
        Object object = new Object();
        Object object2 = new Object();
        System.out.println(object == object2);
        System.out.println("----------------");
        String str = new String("aaa");
        String str2 = new String("aaa");
        System.out.println(str == str2);
        System.out.println("----------------");
        String str3 = "bbb";
        String str4 = "bbb";
        System.out.println(str3 == str4);
        System.out.println("----------------");
        String str5 = new String("ccc");
        String str6 = "ccc";
        System.out.println(str5 == str6);
        System.out.println("----------------");
        String s = "hello";
        String s1 = "hel";
        String s2 = "lo";
        System.out.println(s == s1 + s2);
        System.out.println("----------------");
        System.out.println(s == "hel" + "lo");
    }
}
运行结果:
false
----------------
false
----------------
true
----------------
false
----------------
false
----------------
true
分享到:
评论

相关推荐

    详解 Java 中 equals 和 == 的区别

    在 Java 编程语言中,`equals()` 和 `==` 是两种常见的用于比较对象的运算符,但在处理字符串时,它们的行为有所不同。本文将详细解释它们的区别,并提供示例进行说明。 1. `equals()` 方法 `equals()` 方法是 ...

    java 中String.equals和==的比较

    Java 中 String.equals 和 == 的比较 Java 中 String.equals 和 == 的比较是 Java 编程语言中一个常见的概念,但是一些初学者容易混淆这两个概念。下面我们将详细介绍 Java 中 String.equals 和 == 的比较。 ...

    equals与==之间的区别

    在Java编程语言中,`equals`方法与`==`操作符是进行...总结,`equals`方法和`==`操作符在Java中用于不同的目的,理解它们的差异可以帮助开发者更准确地进行对象比较。在处理对象比较时,应根据具体需求选择适当的方法。

    equal与==区别

    总结来说,在Java中,选择使用`==`还是`.equals()`取决于你要比较的对象类型和比较的需求。对于基本数据类型或原始类型的封装类,通常使用`==`就足够了;而对于字符串或其他对象类型,为了比较内容的相等性,应该...

    Java中Object.equals和String.equals的区别详解

    Java中Object.equals和String.equals的区别详解 Java中的Object.equals和String.equals是两个不同的equals方法,它们之间的区别是非常重要的,理解这两个方法的区别对于我们编写高质量的Java代码非常重要。 首先,...

    在Java(Android)中equals()与==

    在Java和Android编程中,`equals()`方法与`==`运算符是两个常见的用于比较对象的工具,但它们之间有着显著的区别。理解这两者的工作原理对于编写高效且可靠的代码至关重要。 1. `==`运算符: `==`运算符在Java中用...

    实用小工具:Java实体类对比、Json对比、字符串动态拼接等功能

    标题中的“实用小工具:Java实体类对比、Json对比、字符串动态拼接等功能”涉及到的是在软件开发过程中常用的几个技术点,主要集中在Java后端和前端Vue.js的应用上。这里我们将详细探讨这些知识点: 1. **Java实体...

    equals方法的重写.docx

    3. **兼容数据结构**:许多Java集合框架中的数据结构(如HashSet、HashMap)依赖于对象的`equals`和`hashCode`方法来判断元素的唯一性。如果未正确重写`equals`方法,这些数据结构可能会出现异常行为。 #### 三、...

    Excel2007 Java操作对比多张sheet数据

    总结,Java操作Excel 2007进行多张sheet的数据对比是一项实用技能,它结合了数据处理和编程的技巧。通过Apache POI库,我们可以方便地读取、修改Excel文件,并实现复杂的数据比较任务。在实际项目中,应根据具体需求...

    Java对象属性数据比较,返回变化数据

    首先,我们需要理解Java中的对象和属性。在Java中,一个类可以定义为对象的蓝图,而对象则是类的实例,包含了类中定义的属性(也称为字段)和方法。属性是用来存储数据的变量,它们是对象的状态的一部分。例如,一个...

    java实现两个word文件进行比较

    在Java中,有多个库可以用来处理Word文档,如Apache POI和OpenXML4J。Apache POI是广泛使用的库,支持多种Microsoft Office格式,包括Word。在我们的场景下,我们可以利用POI的`XWPFDocument`类来读取`.docx`文件的...

    JAVA流比较两个TXT文件数据

    在Java编程中,流(Stream)是处理输入输出的核心机制,尤其在进行文件操作时。当我们需要比较两个TXT文件的数据时,可以利用Java的流API来实现。下面将详细介绍如何利用JAVA流、FileReader和BufferedReader来实现这...

    浅谈java中BigDecimal的equals与compareTo的区别

    本文将深入探讨BigDecimal的`equals`方法和`compareTo`方法的区别,这对于处理财务、金融等领域中对精度要求极高的计算至关重要。 首先,`equals`方法是Java对象的基本方法,它用于判断当前对象是否与指定对象相等...

    浅谈java字符串比较到底应该用==还是equals

    在 Java 中,有两种方式来比较字符串,一种是使用 "==" 运算符,另一种是使用 "equals()" 方法。那么,在什么情况下应该使用 "==",什么情况下应该使用 "equals()" 呢? 首先,让我们来看一下使用 "==" 运算符比较...

    java计算同一个list中是否有相同的值

    ### Java 计算同一 List 中是否有相同值 在 Java 编程中,判断一个 `List` 中是否存在重复元素是一项常见的需求。特别是在数据处理、验证或分析等场景中,确保数据的唯一性对于维持数据完整性至关重要。 #### 核心...

    Java岗面试核心MCA版.pdf

    1. 抽象类和接口的对比:抽象类和接口都是抽象的概念,抽象类可以包含具体实现,而接口只能包含抽象方法。 2. 普通类和抽象类的区别:普通类可以实例化,而抽象类不能实例化。 3. 创建对象:使用new关键字创建...

    equals,hashcode,toString

    在Java编程语言中,`equals()`, `hashCode()` 和 `toString()` 是三个非常重要的方法,它们主要用于对象的比较、哈希存储以及打印对象信息。这三个方法是Java对象的基础特性,对于理解和开发高质量的Java程序至关...

    java八股文.docx

    此外,还需理解Java中的自动装箱与拆箱、重载与重写、equals与==的区别、hashCode的使用、数据结构String、StringBuffer、StringBuilder的区别,以及ArrayList与LinkedList、HashMap与HashTable的差异等。...

    java命令行编译基础知识

    Java 中有多种数据类型,包括整型、浮点型、char 类型和 boolean 类型。整型包括 Long、Int、Short 和 Byte 等。浮点型包括 Float 和 Double。char 类型用于表示单个字符。boolean 类型用于表示 true 或 false。 2....

    最全java面试题及答案(208道)

    Java 是一种广泛使用的编程语言,尤其在企业级应用和服务器端开发中占据主导地位。面试时,Java 技能的评估通常包括基础概念、语法特性、面向对象编程、集合框架、多线程、异常处理、I/O 流、网络编程、数据库连接...

Global site tag (gtag.js) - Google Analytics