`
hejiajunsh
  • 浏览: 410664 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

equals()和==的联系与区别

阅读更多

1.==的含义,如果是比较基本数据类型,那么就是比较数据类型字面值的大小。如果是比较引用数据类型,就是比较它们在内存地址上是否是相同的。

 

2.equals方法,是Object类的方法之一,所有的java类都有这个方法,区别只是自己有没有重写的问题。如果没有重写,那么也是直接比较内存地址是否相同。重写了,那就要看它们是怎么重写的。

 

看下面的例子

String str1 = "abc";
        String str2 = "abc";
        String str3=new String("abc");
        String str4=new String("abc");
        StringBuffer str5=new StringBuffer("abc");
        StringBuffer str6=new StringBuffer("abc");
        System.out.println("1:"+(str1==str2));
        System.out.println("2:"+(str1.equals(str2)));
        System.out.println("3:"+(str2==str3));
        System.out.println("4:"+(str2.equals(str3)));
        System.out.println("5:"+(str3==str4));
        System.out.println("6:"+(str3.equals(str4)));
        System.out.println("7:"+(str4.equals(str5)));
        System.out.println("8:"+(str5==str6));
        System.out.println("9:"+(str5.equals(str6)));

// 输出结果:
1:true
2:true
3:false
4:true
5:false
6:true
7:false
8:false
9:false

 

----------------------------------

说明:

String对象的初始化有两种方式。

str1和str2表示的"abc"都是存放在字符串池中,而在字符串池中,这两个"abc"其实是一个内存中的数据,

所以str1==str2是true。str1.equals(str2)是true。

 

str3和str4采用的new方式,那么它们对用的字符串"abc"都是在堆中非字符串池中,分别存放在堆中不同的地方,所以str2==str3是false。str3==str4是false。

 

而String和Stringbuffer除了都是直接继承Object之外,并没有其他的直接联系,两者完全是不相干的类。

所以才有str4==str5是false、str4.equals(str5)是false。

 

而StringBuffer也根本没有重写从父类继承的equals方法,所以str5==str6是false。str5.equals(str6)是false。

分享到:
评论

相关推荐

    关于hashCode()和equals()的本质区别和联系

    hashCode() 和 equals() 的本质区别和联系 Java 中的每个对象都有 hashCode() 和 equals() 方法,这两个方法的正确实现对于 Java 开发人员来说是非常重要的。本文将详细介绍 hashCode() 和 equals() 的本质区别和...

    C#中的Equals、RefrenceEquals和==的区别与联系

    了解它们的区别和联系对于编写正确的代码非常重要。以下是对标题中提及的方法和运算符进行详细解读。 首先,我们要区分两种类型的相等性:引用相等性和值相等性。引用相等性指的是两个引用变量是否指向内存中的同一...

    详解hashCode()和equals()的本质区别和联系

    详解hashCode()和equals()的本质区别和联系 在 Java 中,hashCode() 和 equals() 是两个非常重要的方法,它们都是从 Object 类继承来的。了解这两个方法的本质区别和联系对于 Java 开发者来说至关重要。 equals() ...

    Java常见笔试、面试题目深度剖析 相等性(==及equals方法)详解

    本篇文章将深入剖析“==”运算符和equals()方法的区别与联系,帮助你在Java的笔试和面试中更好地应对相关问题。 首先,“==”运算符在Java中用于比较基本类型变量的值是否相等,例如int、char或boolean。对于引用...

    Java中==运算符与equals方法的区别及intern方法详解

    ==运算符、equals方法和intern方法都是Java中的重要概念,它们之间的区别和联系是Java程序设计语言中的一個非常重要的知识点。 知识点: 1. ==运算符:比较两个对象是否是同一个对象。 2. equals方法:比较两个...

    set,list,map区别与联系

    ### set、list、map的区别与联系 #### 一、概述 在Java编程语言中,`set`、`list`和`map`是非常重要的数据结构,它们分别代表了不同的集合类型,各自有着独特的特性与用途。 - **List**:有序集合,可以包含重复...

    Java集合类List-Set-Map的区别和联系.doc

    Java 集合类 List-Set-Map 的区别和联系 Java 集合类 List、Set 和 Map 是 Java 语言中最基本的集合类,它们之间存在着紧密的联系和区别。在本文中,我们将对 Java 集合类 List、Set 和 Map 的区别和联系进行详细的...

    set,list,map区别与联系.docx

    【标题】:集合框架中的set、list和map区别与联系 在Java编程中,集合框架是数据结构的核心,其中set、list和map是最常见的三种数据结构。这些数据结构各有特点,适应不同的应用场景。 1. **List(列表)** - **...

    java1_chapter918_extends.rar

    Java入门-Java学习路线扩展课程:equals的使用源码。 如有问题或好的建议,请与我联系!博客地址为:https://blog.csdn.net/atgfg/article/details/102576039

    java中三种集合set、map、list的区别与联系

    这三种集合类型各自具有独特的特性和用途,理解它们之间的区别与联系对于有效地使用Java进行数据管理至关重要。 ### Set `Set`是一种不允许重复元素的数据结构。这意味着`Set`中的所有元素都是唯一的,任何两个...

    JAVA 编程常见问题

    #### 一、“==”与equals的区别与联系 在 Java 编程过程中,“==”和equals方法是最容易混淆的概念之一。它们都可以用来判断两个对象是否相等,但是它们的使用场景和含义有着本质的区别。 **1.1 “==”运算符** -...

    Java后端技术面试汇总.docx

    - **接口与抽象类的区别**:抽象类可以有属性和方法实现,而接口只能定义方法,不能包含具体实现。 7. **反射** - **反射的用途**:反射允许程序在运行时检查类、接口、字段和方法的信息,并能动态创建对象和调用...

    Java程序员面试题与经验工与总结.docx

    * 栈和队列的区别,IO 和 NIO 的区别,接口和抽象类的区别,int 和 Integer 的自动拆箱/装箱相关问题,常量池相关问题,==和 equals 的区别等。 * Java 和 C++的区别,重载和重写的区别,String 和 StringBuilder、...

    set,list,map区别与联系.pdf

    在计算机科学中,数据结构是组织和存储数据的方式,以便高效地访问和处理。在Java编程语言中,集合框架提供了多种数据结构实现,包括`List`、`Set`和`Map`,它们各自有着独特的特性和用途。 1. **List**: - **...

    java面试题208题(含答案).docx

    1. JDK、JRE和JVM的区别和联系: - JDK(Java Development Kit)是Java开发工具包,包含了编译器、调试器、文档生成工具等,用于开发和运行Java应用程序。 - JRE(Java Runtime Environment)是Java运行时环境,...

    java面试宝典

    237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...

    最新Java面试题

    - **字符流和字节流联系区别**:字符流处理字符数据,字节流处理字节数据;一般文本文件使用字符流,二进制文件使用字节流。 - **常用字节输入流和输出流**:`FileInputStream`、`FileOutputStream`、`...

    JAVA期末简答题参考.doc

    5. **接口与抽象类的区别与联系** - 区别:抽象类可以有非抽象方法和成员变量,接口只能有常量和抽象方法。 - 联系:一个类可以继承一个抽象类并实现多个接口。 6. **构造方法的访问权限** - 构造方法可以是私有...

    java 面试 百度入职老哥整理 全是干货

    - JVM(Java虚拟机)的内部结构,包括JDK、JRE、JNI的联系与区别。 - Java中的设计模式,如单例模式、工厂模式等,以及接口与抽象类的使用和区别。 - Java注解(Annotation)的类型及其用法。 - Java中的序列化...

Global site tag (gtag.js) - Google Analytics