首先,我们先看下以下代码的输出情况

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共创建了几个对象的问题相关推荐

  1. oracle无创建directory权限,【DIRECTORY】普通用户创建Oracle DIRECTORY数据库对象的权限需求及探索...

    可能遇到的报错信息如若在创建DIRECTORY之前普通用户sec未获得相应权限,将会收到最为常见的"ORA-01031: insufficient privileges"错误.模拟 ...

  2. 工作10年后,再看String s = new String(xyz) 创建了几个对象?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 转自:艾小仙 这个问题相信每个学习java的同学都不陌生, ...

  3. 别再问我 new 字符串创建了几个对象了!我来证明给你看!

    来自:Java中文社群 我想所有 Java 程序员都曾被这个 new String 的问题困扰过,这是一道高频的 Java 面试题,但可惜的是网上众说纷纭,竟然找不到标准的答案.有人说创建了 1 个对 ...

  4. R语言ggplot2可视化:修改已经创建的ggplot2可视化对象进行自定义的修改、使用ggplot_build函数更改已经创建的可视化结果

    R语言ggplot2可视化:修改已经创建的ggplot2可视化对象进行自定义的修改.使用ggplot_build函数更改已经创建的可视化结果 目录

  5. Java避免创建不必要的对象

    小Alan最近看到了<Effective Java>这本书,这本书包含的内容非常丰富,这本书我就不多介绍了,只能默默的说一句,作为一名java开发错过了这本书难免会成为一个小遗憾,所以还是 ...

  6. effective java读书笔记5:避免创建不必要的对象

    2019独角兽企业重金招聘Python工程师标准>>> 解读:如果不需要每次都创建一个相同功能的新对象,最好重用对象,因为有时候反复创建同样的对象是有代价的. 例如: 1.Strin ...

  7. 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。...

    实验源程序: //信1605-3 20163578 于丁一 package 可查询你创建了多少对象; public class Zuoye { int number; public Zuoye() { ...

  8. 云端飘 String s=new String(abc)创建了几个对象?

    转自:http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html -------------------------------- ...

  9. 【Android 高性能音频】Oboe 开发流程 ( 创建并设置 AudioStreamCallback 对象 | 打开 Oboe 音频流 | 日志封装 logging_macros.h )

    文章目录 一.创建并设置 AudioStreamCallback 对象 二.打开 Oboe 音频流 三.日志封装 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getti ...

最新文章

  1. 入职谷歌、微软的大佬总结的刷题笔记.pdf
  2. 用 vue + d3 画一棵树
  3. mysql检索有什么区别_检索行时,MySQL中AND或OR运算符有什么区别?
  4. UNIX再学习 -- 用户 ID 和组 ID
  5. Chapter 5:Spectral-Subtractive Algorithms
  6. 通俗理解决策树算法中信息增益的
  7. 【Java数据结构与算法】第十九章 贪心算法、Prim算法和Kruskal算法
  8. PyTorch实战福利从入门到精通之二——Tensor
  9. 《Java编程思想》笔记10------字符串
  10. pks服务器清除归档文件路径,HoneywellPKS系统维护手册.doc
  11. C# Azure 存储-队列
  12. 【BZOJ 1053】反素数【素数基本知识】
  13. (四)BP神经网络预测(上)
  14. 凸优化与非线性优化基础(3)-- 二次规划Quadratic Programming
  15. 公布几个设备的sysObjectId取值
  16. 深圳大学移动互联网应用期末大作业——垃圾分类app
  17. Android入门:HttpClient介绍
  18. 视频去声音 免费中文版声音处理软件 轻松教你去除视频声音
  19. 让站群排名稳步上升的策略
  20. 跨文件的 expected initializer before ‘xxx‘

热门文章

  1. restful api和普通api有什么特点_Django REST Framework教程(1): 什么是序列化和RESTful的API
  2. mysql 字符串出现问题_MYSQL 中字符串函数 归纳总结
  3. 将json转为map的两种方式及前后端开发json Api设计规范总结
  4. kafka的消费者客户端偏移的维护
  5. kafka分区分配策略
  6. Win32 Application 、Win32 Console Application、MFC工程项目
  7. C++由(int)a引发的思考及浮点数在内存中的表示
  8. 百度李彦宏:自动驾驶最后一公里率先到来;未来20年手机依赖会降低
  9. 18岁华裔准博士生,“杀死了”量子计算大进展
  10. 谷歌AI魔镜:看你手舞足蹈,就召唤出8万幅照片学你跳 | TensorFlow.js