字符串常量池中的 new String("") 会发生什么

2023-12-27

如果我创建一个字符串对象

String s=new String("Stackoverflow");

将只在堆中创建 String 对象,或者也在 String 常量池中创建一个副本。

提前致谢。


如果调用,则只能将字符串放入常量池中intern或使用字符串文字,据我所知。

任何时候你打电话new String(...)你只得到一个普通的新的String对象,无论您调用哪个构造函数重载。

就你而言,你还要确保is一个包含内容的字符串"Stackoverflow"在常量池中,事实上您正在使用字符串文字 - 但如果它已经存在,则不会添加另一个字符串文字。因此,将其分开:

String x = "Stackoverflow"; // May or may not introduce a new string to the pool
String y = new String(x);   // Just creates a regular object

此外,调用的结果new String(...)将始终是与所有先前引用不同的引用 - 与字符串文字的使用不同。例如:

String a = "Stackoverflow";
String b = "Stackoverflow";

String x = new String(a);
String y = new String(a);

System.out.println(a == b); // true due to constant pooling
System.out.println(x == y); // false; different objects

最后,我一直不清楚何时将字符串添加到常量池中,这对我来说也不重要。我猜是的might在类加载上(该类使用的所有字符串常量,立即加载),但它可能是在每个方法的基础上。可以使用以下方法找出一个特定的实现intern(),但这对我来说从来都不是非常重要:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串常量池中的 new String("") 会发生什么 的相关文章

随机推荐

  • Javascript 使用 momentjs 在时区之间进行转换

    在我的应用程序中 用户选择日期 时间和时区 此选择必须向其所在时区的其他用户显示 这意味着如果来自纽约的用户 A 选择美国东部时间 8 月 8 日凌晨 3 00 来自北京的用户 B 将看到该日期时间转换为中国标准时间 CST 为此 我想 好
  • 使用反应式扩展以正确的顺序处理多个响应

    情况 我有一个系统 其中一个请求会产生两个响应 请求和响应有相应的可观察量 IObservable
  • 尝试安装 cx_Oracle 时出现“错误:无法找到 Oracle 软件安装”

    新手尝试使用 python 进行一些数据库分析 我不断收到错误 安装 CX oracle 通过 easy install 时出现 错误 无法找到 Oracle 软件安装 问题是我的本地计算机上没有 oracle 我正在尝试使用 python
  • TypeScript:如何在循环中正确使用生成的联合类型?

    我有以下类型 type Updater
  • 将字符串文字与另一个字符串连接

    有什么原因导致我无法将字符串文字与字符串变量连接起来吗 下面的代码 fn main let x abcd io println Message x 给出这个错误 test2 rs 3 16 3 31 error binary operati
  • BST 节点删除算法是如何工作的?

    我正在尝试遵循 BST 算法Granville Barnett 的 数据结构和算法 http dotnetslackers com projects Data Structures And Algorithms 但我不明白下面描述的节点删除
  • Angular 2:基于服务响应加载组件

    我的应用程序中有 10 个组件 当我调用 Home 路由时 我想根据 Home 服务响应加载动态组件 主页组件 代码将执行如下 Home组件 gt 调用HTTP服务 gt 返回数组组件名称的列表名称 例如 gt Now I want to
  • Node.js - 等待多个异步调用

    我试图在渲染 Jade 模板之前进行多个 MongoDB 查询 但我不太清楚如何等到所有 Mongo 查询完成后再渲染模板 exports init function req res var NYLakes var NJLakes var
  • 尝试在设备上运行 calabash-android 测试时出现“应用程序未启动(运行时错误)”

    我试图在连接到 Windows 7 笔记本电脑的 Samsung Galaxy S3 上运行一小部分初始的 calabash android 测试 并在尝试启动测试服务器时不断收到 应用程序未启动 运行时错误 消息 我安装了 Ruby v1
  • 使用 rmarkdown/knitr 将所有代码保存到最后

    我希望能够使用 knit rmarkdown 生成一个文档 将所有输出保留在一起 但将代码保留到最后 理想情况下作为各种引用的脚注 即可以查找每个图形或输出的代码在附录中使用脚注 这可能吗 如果我正确理解你的意思的话 您可以向原始代码块添加
  • Python 中正则表达式的使用令人困惑

    我对以下三种模式感到困惑 有人能更详细地解释一下吗 IPython with Python 2 7 3 In 62 re findall r a z f233op Out 62 f op why does the last come out
  • 计算阶乘结果的数字尾随零

    我正在尝试计算由阶乘产生的数字的尾随零 这意味着数字变得非常大 以下代码采用一个数字 计算该数字的阶乘 并计算尾随零 然而 当数量大约为25 numZeros 不起作用 public static void main String args
  • 字符串排序顺序(LC_COLLATE 和 LC_CTYPE)

    显然 PostgreSQL 从 8 4 版本开始允许每个数据库使用不同的语言环境 所以我去文档阅读有关语言环境的信息 http www postgresql org docs 8 4 static locale html 字符串排序顺序是我
  • 未找到 JNI_Onload() 且 VM 关闭

    我是安卓新手 我按照链接上的说明进行操作http marakana com forums android examples 49 html http marakana com forums android examples 49 html使
  • 如何使用另一个 XML 文件中的属性值作为当前 XML 中的元素值选择

    我有两个 XML 文件 一个是主 XML 文件 另一个用作查找表 这是主要的 XML
  • Kubernetes 中 subPath 和 mountPath 有什么区别

    我正在尝试将volumeMounts 中的文件添加到 dockerignore 并尝试了解subPath 和mountPath 之间的区别 阅读官方文档对我来说并不清楚 我应该从我读到的内容中添加 mountPath 是 pod 中将挂载卷
  • 如何使用 Jackson 解析不合格的 JSON 数组?

    因此 我正在访问第三方 API 它为我提供了这个 JSON 对象 但我花了很长时间试图找到一种使用 Jackson 解析资源子对象的优雅方法 我假设我必须编写一个自定义反序列化器 尽管我想知道是否还有其他方法 somekey someval
  • XSLT 节点值比较

    如何将 IP 地址与家庭和姓名参考进行比较 使用 XSLT 文件 在详细信息中 我有一个 xml 文件 其中包含操作员站节点列表 每个操作员站都有其唯一的信息 因此 通过将第一个操作员站节点视为主站 比较所有剩余的从属操作员站信息 首先需要
  • HTTP 持久连接

    尝试使用 Linux 套接字接口用 C 语言实现一个简单的 HTTP 服务器时 我在我希望它具有的某个功能 即持久连接 方面遇到了一些困难 使用单独的 TCP 连接一次发送一个文件相对容易 但这似乎不是非常有效的解决方案 例如考虑多次握手
  • 字符串常量池中的 new String("") 会发生什么

    如果我创建一个字符串对象 String s new String Stackoverflow 将只在堆中创建 String 对象 或者也在 String 常量池中创建一个副本 提前致谢 如果调用 则只能将字符串放入常量池中intern或使用