Java中Object.equals与String.equals的区别
基础知识
Java的存储空间:寄存器、栈、堆、静态存储区、常量存储区(常量池)、其他存储位置。
此处重点介绍堆和常量存储区:
堆:存储new的对象;
常量池:用来存储final static、String的常量。Object.equals与String.equals的区别
Object.equals(==):比较内存地址;
String.equals: 比较内容即可,不管内存地址。总结:
Object.equals相等,String.equals一定相等;
String.equals相等,Object.equals不一定相等。实战演练
public class TestString {public static void main(String[] args){// 维护在常量池里面String a="hello";String b="hello";// new出来的所有对象都在堆内存中// 只要是new出现来的都是新对象String c=new String("hello");String d=new String("hello");// 对比内存地址//trueSystem.out.println(a==b);//falseSystem.out.println(a==c);//falseSystem.out.println(c==d);//对比内容//trueSystem.out.println(a.equals(b));//trueSystem.out.println(a.equals(c));//trueSystem.out.println(c.equals(d));} }
解释:
a,b都是常量,a和b都是指向常量存储区中的常量'hello',所以无论内容还是内存地址都是一样的,因此a==b以及a.equals(b)都是true;
c,d都是变量,他们都是new出来的对象,里面存在两个hello变量,c和d分别指向自己的hello变量,所以c和d内容一样,但是内存地址不一样,因此c==d是true,但是c.equals(d)为true。
Java中Object.equals与String.equals的区别相关推荐
- java 子类tostring,JAVA中Object类的toString()方法,objecttostring
JAVA中Object类的toString()方法,objecttostring toString public String toString() 返回该对象的字符串表示.通常,toString 方 ...
- Java中collection.toArray(new String[0])、resultSet.toArray(new Integer[0])、Set.toArray()new 数组的性能比较
一.在调用Set的toArray()方法的时候 在使用HashMap的时候,它的keySet()方法将返回一个Set集合 且Set是继承自Collection的,在使用toArray()的时候其实转换 ...
- Java中 byte[]数组序列化和fastjson序列化区别
Java中 byte[]数组序列化和fastjson序列化区别 Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比. 首先看下实现方式: 1 byte数组序列 ...
- 转 Java中final、finally、finalize的区别与用法
Java中final.finally.finalize的区别与用法 1.简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构 ...
- Java中的SoftReference和WeakReference有什么区别?
本文翻译自:What's the difference between SoftReference and WeakReference in Java? java.lang.ref.WeakRefer ...
- Java中的Type接口和Class类区别和联系
Java中的Type接口和Class类有什么区别 Type是Class的父接口. Type 是 Java 编程语言中所有类型的公共高级接口.它们包括原始类型.参数化类型.数组类型.类型变量和基本类型. ...
- Java中print、printf、println的区别 详解
Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...
- JAVA中的方法和构造方法有什么区别
JAVA中的方法和构造方法有什么区别 1.方法有返回类型,方法名小写,不能和类名相同:构造方法没有返回类型,void也不行,名与类名相同. 2.构造方法是初始化对象的重要途径,所以就算你给一个类没有定 ...
- java printf与println_浅析Java中print、printf、println的区别
我们的程序员在开发的时候,都会使用到很多不同的功能,但是有些功能是大同小异,别着急,下文是爱站技术频道小编为大家带来的浅析Java中print.printf.println的区别,希望对你学习有帮助! ...
最新文章
- 怎样看python源代码-如何直接从IDE读取Python源代码
- ubuntu新建python代码文件_[Vim]新建python文件自动添加python header
- MCMC笔记:蒙特卡罗方法
- 具有只读属性的ComboBox
- 网络安全08-虚拟机运行架构(寄居架构+原生架构)、虚拟机产品简单介绍、windows操作系统--屏蔽系统自动更新
- 深入理解javascript函数参数
- 曙光服务器优势,5大核心优势 探秘曙光Cloudview三大平台
- postman安装使用教程(标贝科技)
- Wekan 2.23 发布,支持中文的 JavaScript kanban
- 微机原理、汇编语言与接口技术(韩晓茹)课后答案
- source insight 4.0 使用make命令编译
- 字节跳动Go 语言面试会问哪些问题?
- 关于华为设备ospf进程中RID重叠的问题
- docker问题备忘:rpc error: code = 2 desc = containerd: container not found
- matlab读txt文件
- omnet++仿真软件会从运行模拟开始
- 利用 UMA 使硬件加速器可直接用于 TVM
- 【图像隐藏】基于DCT算法实现数字水印嵌入+检测+攻击含Matlab源码
- VS2013 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
- 关于如何制作一个单机游戏
热门文章
- Java NIO类库Selector机制解析--转
- hibernate 三种查询方式源码跟踪及总结
- 引擎讲解2--主要是MyISAM和InnoDB的区别
- 2015年240个数据库引擎排名参考
- Apache ZooKeeper - ZK的内存数据 + 持久化事务日志 + 数据快照 初探
- Spring Boot2.x-07Spring Boot2.1.2整合Mybatis
- python 文本分析库_Python有趣|中文文本情感分析
- java变量设置_java的安装与环境变量设置
- 解决mysql java.sql.SQLException: The server time zone value‘XXXXXX' is unrecognized or represents...
- word 转html utf8 在线_pdf转word在线转换器:办公必备工具安利!