关于a+b共创建了几个对象的问题
首先,我们先看下以下代码的输出情况
String s = "a" + "b";
System.out.println(s == "ab"); // true
将这段代码反编译后得到如下结果
public static void main(java.lang.String[]);Code:0: aload_01: invokespecial #1 // Method java/lang/Object."<init>":()V4: returnpublic static void main(java.lang.String[]);Code:0: ldc #2 // String ab2: astore_13: getstatic #3 // Field java/lang/System.out:Ljava/io/PrintStream;6: aload_17: ldc #2 // String ab9: if_acmpne 1612: iconst_113: goto 1716: iconst_017: invokevirtual #4 // Method java/io/PrintStream.println:(Z)V20: return
重点是这句0: ldc #2 // String ab
,可以发现 从一开始"a"+"b"就是一个整体,这是因为jvm在编译时就去掉其中的加号,直接将其编译成一个相连的结果存入了常量池,而不是等到运行时再去进行相加,所以运行s=="ab"
结果为true;
结论:
String s = "a" + "b";
只创建了一个对象,就是ab,存于常量池中。
关于a+b共创建了几个对象的问题相关推荐
- oracle无创建directory权限,【DIRECTORY】普通用户创建Oracle DIRECTORY数据库对象的权限需求及探索...
可能遇到的报错信息如若在创建DIRECTORY之前普通用户sec未获得相应权限,将会收到最为常见的"ORA-01031: insufficient privileges"错误.模拟 ...
- 工作10年后,再看String s = new String(xyz) 创建了几个对象?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 转自:艾小仙 这个问题相信每个学习java的同学都不陌生, ...
- 别再问我 new 字符串创建了几个对象了!我来证明给你看!
来自:Java中文社群 我想所有 Java 程序员都曾被这个 new String 的问题困扰过,这是一道高频的 Java 面试题,但可惜的是网上众说纷纭,竟然找不到标准的答案.有人说创建了 1 个对 ...
- R语言ggplot2可视化:修改已经创建的ggplot2可视化对象进行自定义的修改、使用ggplot_build函数更改已经创建的可视化结果
R语言ggplot2可视化:修改已经创建的ggplot2可视化对象进行自定义的修改.使用ggplot_build函数更改已经创建的可视化结果 目录
- Java避免创建不必要的对象
小Alan最近看到了<Effective Java>这本书,这本书包含的内容非常丰富,这本书我就不多介绍了,只能默默的说一句,作为一名java开发错过了这本书难免会成为一个小遗憾,所以还是 ...
- effective java读书笔记5:避免创建不必要的对象
2019独角兽企业重金招聘Python工程师标准>>> 解读:如果不需要每次都创建一个相同功能的新对象,最好重用对象,因为有时候反复创建同样的对象是有代价的. 例如: 1.Strin ...
- 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。...
实验源程序: //信1605-3 20163578 于丁一 package 可查询你创建了多少对象; public class Zuoye { int number; public Zuoye() { ...
- 云端飘 String s=new String(abc)创建了几个对象?
转自:http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html -------------------------------- ...
- 【Android 高性能音频】Oboe 开发流程 ( 创建并设置 AudioStreamCallback 对象 | 打开 Oboe 音频流 | 日志封装 logging_macros.h )
文章目录 一.创建并设置 AudioStreamCallback 对象 二.打开 Oboe 音频流 三.日志封装 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getti ...
最新文章
- 入职谷歌、微软的大佬总结的刷题笔记.pdf
- 用 vue + d3 画一棵树
- mysql检索有什么区别_检索行时,MySQL中AND或OR运算符有什么区别?
- UNIX再学习 -- 用户 ID 和组 ID
- Chapter 5:Spectral-Subtractive Algorithms
- 通俗理解决策树算法中信息增益的
- 【Java数据结构与算法】第十九章 贪心算法、Prim算法和Kruskal算法
- PyTorch实战福利从入门到精通之二——Tensor
- 《Java编程思想》笔记10------字符串
- pks服务器清除归档文件路径,HoneywellPKS系统维护手册.doc
- C# Azure 存储-队列
- 【BZOJ 1053】反素数【素数基本知识】
- (四)BP神经网络预测(上)
- 凸优化与非线性优化基础(3)-- 二次规划Quadratic Programming
- 公布几个设备的sysObjectId取值
- 深圳大学移动互联网应用期末大作业——垃圾分类app
- Android入门:HttpClient介绍
- 视频去声音 免费中文版声音处理软件 轻松教你去除视频声音
- 让站群排名稳步上升的策略
- 跨文件的 expected initializer before ‘xxx‘
热门文章
- restful api和普通api有什么特点_Django REST Framework教程(1): 什么是序列化和RESTful的API
- mysql 字符串出现问题_MYSQL 中字符串函数 归纳总结
- 将json转为map的两种方式及前后端开发json Api设计规范总结
- kafka的消费者客户端偏移的维护
- kafka分区分配策略
- Win32 Application 、Win32 Console Application、MFC工程项目
- C++由(int)a引发的思考及浮点数在内存中的表示
- 百度李彦宏:自动驾驶最后一公里率先到来;未来20年手机依赖会降低
- 18岁华裔准博士生,“杀死了”量子计算大进展
- 谷歌AI魔镜:看你手舞足蹈,就召唤出8万幅照片学你跳 | TensorFlow.js