面试题之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)
上一篇 2022年6月13日 下午6:36
下一篇 2022年6月13日 下午6:36


相关推荐

  • 什么是Rational Rose[通俗易懂]

    什么是Rational Rose[通俗易懂]一、RationalRose是什么?RationalRose是Rational公司出品的基于UML的可视化建模工具。当前市场上基于UML可视化建模的工具很多,例如有Microsoft的Visio

    2022年7月3日
    51
  • Mysql 5.7解压版下载安装及配置教程

    Mysql 5.7解压版下载安装及配置教程最近在学习中用到了MySQL数据库,在安装过程中遇到了不少问题,在翻了大半天百度后,问题基本都解决了,所以写一篇MySQL5.7解压版的图文详细安装教程。至于为什么我会选择解压版而不是安装版,一是因为安装版没有64位版本;二是因为安装版的软件在重装系统或者挪动软件的位置后,就会出现无法使用的情况,而大部分绿色版或者解压版的软件就不存在这样的问题,只需要重新配置一下即可使用。如果你是刚接触MySQL的同学,安装版也是你不错的选择,安装时无脑点下一步基本就可以装好,默认参数程序都会给你配好,既简单又方.

    2022年5月7日
    49
  • Java 文件上传 MultipartFile

    Java 文件上传 MultipartFileJava文件上传MultipartFile1. 配置MultipartResolver:用于处理表单中的file

    2022年5月14日
    53
  • SENT 协议

    SENT 协议Pending

    2022年6月29日
    74
  • 再见 Cursor,从0到1用上Claude Code后,惊呼这才是生产力工具

    再见 Cursor,从0到1用上Claude Code后,惊呼这才是生产力工具

    2026年3月16日
    2
  • Owasp top10 小结[通俗易懂]

    Owasp top10 小结[通俗易懂]Owasptop101.SQL注入原理:web应用程序对用户输入的数据合法性没有过滤或者是判断,前端传入的参数是攻击者可以控制,并且参数带入数据库的查询,攻击者可以通过恶意的sql语句来实现对数据库的任意操作。2.失效的身份认证和会话管理原理:在开发web应用程序时,开发人员往往只关注Web应用程序所需的功能,所以常常会建立自定义的认证和会话方案。但是要正确的实现这些方案却是很难的。结果就在退出,密码管理,超时,密码找回,账户更新等方面存在漏洞。危害:由于存在以上的漏洞,恶意用户可能会窃取

    2022年5月28日
    80

发表回复

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

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