面试题之String str = new String(“abc”); 创建了几个对象

面试题之String str = new String(“abc”); 创建了几个对象今天去面试的时候碰到了这个问题:String str = new String("abc"); 创建了几个对象,回来自己研究并查阅资料才发现答错了。。网上的争论不少,有的说是两个,答案应该是:两个或一个理由解释如下:都了解java 的字符串常量缓冲区(字符串池,字符串常量池),如果代码是这样的:String str2 = new String("abc"); 并且 abc 字…

大家好,又见面了,我是你们的朋友全栈君。

今天去面试的时候碰到了这个问题:String str = new String(“abc”); 创建了几个对象,回来自己研究并查阅资料才发现答错了。。
网上的争论不少,有的说是两个,答案应该是:两个或一个
理由解释如下:
都了解java 的字符串常量缓冲区(字符串池,字符串常量池),
如果代码是这样的:

String str2 = new String("abc");

 

并且 abc 字符串之前没有用过,这毫无疑问创建了两个对象,一个是new  String 创建的一个新的对象,一个是常量“abc”对象的内容创建出的一个新的String对象,

但是如果代码是这样子的:

String str1 = "abc";
		
String str2 = new String("abc");

嗯,创建几个就不好说了,我们还是测试一下吧,首先我们打开cmd.exe, 通过javac *.java编译好该Java文件,然后通过命令javap -c *来查看java编译后的ByteCode字节码,

面试题之String str = new String("abc"); 创建了几个对象

ldc的含义是:将常量值从常量池中取出来并且压入栈中。从上图中,我们可以看到第0行和第7行中的字符串引用是同一个,这说明了,在编译期间,该字符串变量的值已经确定了下来,并且将该字符串值缓存在缓冲区中,同时让该变量指向该字符串值,后面如果有使用相同的字符串值,则继续指向同一个字符串值

所以String str2 = new String(“abc”); 此时就创建一个对象,而abc 则是从字符串常量缓冲区中取出来的。

ok。就是这个样子。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147245.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 鸿蒙 OS 2.0 来了!值得开发者关注的是什么?

    鸿蒙 OS 2.0 来了!值得开发者关注的是什么?鸿蒙OS首发时,余承东特意用橙色标明1.0版本「基于开源框架,关键模块自研」。而按照华为的规划,今年在HDC上刚刚发布的鸿蒙2.0迎来了史诗级升级,完全演化成一个自主独立的操作系统。

    2022年6月18日
    26
  • Vs2010_labview读取CPU序列号

    Vs2010_labview读取CPU序列号   用VS2008有些日子,刚刚才发现AboutMVS是有天数限制的(90),郁闷,只好在网上找序列号,不错,把刚刚找到的VS2008可升级序列号发给大家。          1.VisualStudio2008ProfessionalEdition:     XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT      2.VisualStudio2008

    2022年8月10日
    7
  • .NET控件名称缩写一览表「建议收藏」

    .NET控件名称缩写一览表「建议收藏」.NET控件名称缩写一览表

    2022年4月24日
    43
  • mysql和sql server一样吗_sql视图和查询的区别

    mysql和sql server一样吗_sql视图和查询的区别导读:接下来的网上商城的项目,需要用到MySQL数据库了。这个对于我来说,是一个新接触的东西,按照惯例,在刚开始学习一个东西的时候,先从宏观上去了解它。本篇博客,先介绍SQLServer的基本内容,然后介绍MySQL的基本内容,最后介绍两者之间的区别。一、SQLServer基本简介1.1,概述SQLServer是Microsoft公司推出的关系型数据库管理系统。具有使

    2022年9月27日
    2
  • 【博弈论】常见总结「建议收藏」

    【博弈论】常见总结「建议收藏」每次看到博弈论的题目就很脑阔疼平衡状态,又称作奇异局势。当面对这个局势时则会失败。任意非平衡态经过一次操作可以变为平衡态。先手能够在初始为非平衡的游戏中取胜,后手能够在初始为平衡的游戏中取胜。SG函数待补两个博客12来源12一、巴仕博弈(BashGame)1堆题目HDU1846有一堆物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光…

    2022年10月15日
    3
  • Window系统内核版本号及其查看方法「建议收藏」

    Window系统内核版本号及其查看方法「建议收藏」一.WindowsNTWindwosNT是一系列操作系统的总称。WindowsNT(NewTechnology)是Microsoft在1993年推出的面向工作站、网络服务器和大型计算机的网络操作系统,也可做PC操作系统。它与通信服务紧密集成,基于OS/2NT基础编制。OS/2由微软和IBM联合研制,分为微软的MicrosoftOS/2NT与IBM的IBMOS/2。

    2022年8月23日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号