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

关于"equals" &" =="异同

阅读更多

 关于"equals" &" =="异同                                    

 

String 不是 Java 中的一个基本类型 它是一个 类。这一点从它的开头大写 S 就可以大致看出来

在 Java 中 比较有两种方式 == 和 equals()
==        比较的是 两个实例的内存地址
equals()  比较的是 两个实例的各属性值是否完全相等

equals() 是从 Object() 继承来的 也就是说每一个 对象都有这个 equals()
但是如果没有被覆盖的话 equals() 默认也是比较 内存地址, 和 == 一样

String str1=new String("Hi Mom");和

 String str2=new String("Hi Mom");


分别创建了两个不同的 String 实例, 在内存中分配了不同的地址
所以 用 == 比较得到的结果是 false

String str3=str1;
设一句执行后 把 str1 的地址 传给了 str3
这时 str1 和 str3 都指向同一块内存
所以 用 == 比较得到的结果是 true

要说明的是 如果你这样写:
String str1 = "Hi Mom"
String str2 = "Hi Mom"
那么编译器会 很聪明的只创建 一个实例 而让 str1 和 str2 都指向这个地址
所以这时 str1 == str2 就会返回 true

Java中的“=”是赋值的意思
对于 基本类型 赋过去的是 一个值
对于 对象来说 赋过去的是 这个对象实例的地址

(需要说明的是 为了 阐述清楚 用了 地址 一词 但是在 Java 里 没有地址的说法 应叫做 引用)

(注:转自寒夜孤星)



分享到:
评论

相关推荐

    JavaSE.docx

    JavaSE/docx JavaSE 是 Java 标准版,涵盖...* equals 和 == 的异同点 * Integer 和 int 的区别 * String、StringBuffer 和 StringBuilder 的异同 * Java 数组与集合的比较 * ArrayList 与 LinkedList 的比较存储结构

    excel文件异同比较代码

    可以读取两个Excel文件到DataFrame,然后使用DataFrame的`equals()`或`compare()`函数进行比较。若需要考虑样式、公式等细节,可以使用openpyxl库逐个单元格比较。 3. **Java**:Apache POI是Java处理Office文档的...

    java1_chapter918_extends.rar

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

    java面试宝典

    77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18 78、abstract class Name { private String name; public abstract boolean isStupidName(String name) {}}这有何错误? 18 79、public class ...

    单值类型集合的异同.docx

    ### 单值类型集合List与Set的异同分析 #### 集合概述 在Java编程语言中,集合框架提供了一系列用于存储和操作一组对象的数据结构。这些集合类按照其特性可以大致分为两大类:单值类型集合和多值类型集合。本篇文章...

    基础知识.pdf

    在核心篇中,深入讨论了数据存储相关的知识点,包括MySQL的JDBC流程,MVC设计思想,以及equals与==的区别。探讨了集合框架中List、Set、Map的使用与区别,包括ArrayList与LinkedList、HashMap与Hashtable、HashSet与...

    Java Equals JavaScript-crx插件

    Java 和 JavaScript 是两种不同的编程语言,虽然它们的名字相似,但有着本质的区别。Java是由Sun Microsystems(现已被Oracle公司...在学习和使用过程中,理解它们的异同,能够提升我们的技术水平和解决问题的能力。

    java笔试题

    16、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 17、是否可以继承String类? 18、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,...

    net学习笔记及其他代码应用

    25.请详述在dotnet中类(class)与结构(struct)的异同? 答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. [Page] 26.根据委托(delegate)的知识,请完成以下用户...

    2016java面试宝典

    `equals`方法默认也是比较地址,但可以通过重写使其比较对象内容的相等性。 **12. 静态变量和实例变量的区别?** - **答案:** 静态变量属于类级别,所有实例共享同一份;实例变量属于对象级别,每个实例有自己的...

    String和StringBuffer详细用法总结

    根据给定的信息,本文将对`String`与`StringBuffer`在Java中的使用进行详细的解析与对比,并结合实例深入分析二者的异同及其适用场景。 ### `String` 和 `StringBuffer` 的基本概念 #### `String` 在Java中,`...

    C#面试总结绝对好用

    2、请详述在dotnet中类(class)与结构(struct)的异同:(10分) 答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. 3、根据委托(delegate)的知识,请完成以下用户...

    java最全的面试宝典

    10. **抽象类和接口的异同**: - **抽象类**:可以包含抽象方法(没有实现的方法)和非抽象方法,以及成员变量。 - **接口**:只能包含抽象方法和常量,默认方法(从Java 8开始支持)。一个类可以实现多个接口,但...

    Java问题宝典2012版

    11、"=="和equals方法究竟有什么区别? 12 12、静态变量和实例变量的区别? 13 13、是否可以从一个static方法内部发出对非static方法的调用? 13 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math....

    2013年最全的JAVA面试题集,内部资料,绝对能帮助到你,不要后悔哦。

    两个对象值相同(x.equals(y) ==true),但却可有不同的hash code,这句话对不对?(等级1级) 15. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递...

    Java知识点.docx

    5. 接口与抽象类的异同: - 抽象类可包含非抽象方法,接口只能有公共抽象方法。 - 抽象类成员变量可以是任意类型,接口只能是public static final类型。 - 类只能单继承抽象类,但能实现多个接口。 6. final...

    java面试宝典2012版.pdf

    69、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的...

    史上最全java面试题总结.pdf

    - **ArrayList与LinkedList异同**:ArrayList基于动态数组,访问速度快,插入和删除慢;LinkedList基于双向链表,插入和删除快,访问慢。 - **ArrayList与Vector区别**:Vector线程安全,每个方法都加了...

    面试常见题.docx

    10. **抽象类与接口的异同**: - 抽象类可以有构造器,接口则不能。 - 抽象类可以包含抽象方法和非抽象方法,接口只能有抽象方法。 - 抽象类成员权限可变,接口成员默认为 public。 - 抽象类可以定义成员变量,...

Global site tag (gtag.js) - Google Analytics