标签:引用 heap 自定义 实例化 str dem 基本类型 类型 技术
不管是‘==’还是‘equals’,他们的比较都需要区分类型来讨论的:
‘==’
当比较的数据类型是基本类型时,比较值是否相同
当比较的数据类型是引用类型时,不仅比较值相同还比较其所在内存地址是否相同,也就是引用是否相同。
分析:String不是一个基本类型,它和Integer一样是一个类。由于strC是我们创建并实例化了一个String对象,java虚拟机在heap(堆)里为strC重新开辟了一块空间,因此它和strA、strB的引用是不一样的,所谓引用就是该变量在堆中的起始地址。
‘equals’
equals的本质就是==,但一些类如String、Integer对该方法进行了重写,只进行值的比较,但是没有重写该方法的类,还是比较引用地址。如自定义的类,下图中,我在Demo1中定义了一个内部类,然后分别实例化:
顺便提一下,内部类虽然在宿主类中,但javac编译出来的class(字节码文件)是宿主类的字节码文件在同一目录下的:
标签:引用 heap 自定义 实例化 str dem 基本类型 类型 技术
原文地址:https://www.cnblogs.com/2sheep2simple/p/10778329.html