为什么两个字符串对象引用的串联不等于相同内容的字符串对象[重复]

2023-11-29

为什么下面s3 and s5 String对象不同,当s5尝试在字符串池中创建它检查内容s3已经有相同的内容了s5 refers s3字符串池中的对象。但我的假设是错误的,那么任何人都可以纠正我。

String s1 = "Buggy";
String s2 = "Bread";
       
String s3 = "BuggyBread";
      
String s4 = "Buggy" + "Bread"; 
String s5 = s1 + s2 
System.out.println(s3 == s4); // True
System.out.println(s3 == s5); //false

  1. String s4 = "Buggy" + "Bread";

    编译器足够聪明,可以意识到这只是常量BuggyBread这已经在中引用了s3。换句话说,s4参考文献相同String as s3那是在字符串池中。

  2. String s5 = s1 + s2;

    这里编译器忠实地翻译为StringBuilder基于变量内容的串联,这会产生一个差异引用s3。换句话说,这类似于:

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

为什么两个字符串对象引用的串联不等于相同内容的字符串对象[重复] 的相关文章

随机推荐

  • toLocaleDateString 的相反方法

    为了创建一个尊重浏览器文化的字符串 我们可以这样做 var myDate new Date var myDateString myDate toLocaleDateString myDate returns a string 这很好 因为如
  • JQuery AJAX 从表单发送文件数组

    我在某个地方找到了这段代码 可以在不刷新浏览器的情况下上传图片 然而 我不喜欢上传器文件 所以我决定使用我以前使用过的旧文件 问题在于它正在发送一个数组而不是来自 javascript 文件的字符串 它的目的是发送多个文件而不是仅发送一个文
  • Firefox、SVG、文本装饰

    考虑以下代码片段
  • java中变音符号的问题[重复]

    这个问题在这里已经有答案了 我正在尝试通过控制台读取一些数据并将其写入文件 当控制台中的数据包含元音变音字符时 我遇到问题 它打印出 而不是元音变音字符 请在下面找到我的代码 有人可以帮帮我吗 String cmd cmd C si vie
  • namshi/jose 5.0.2 在 macosx 上需要 lib-openssl

    我查看了其他问题 但找不到解决方案 尝试安装时JWT包我收到标题中提到的错误 我在 mac os x Sierra 上使用 xampp 版本 7 0 8 和 PHP 5 6 我得到的错误如下 Problem 1 namshi jose 5
  • 声明方法时,各种参数前缀的含义是什么?

    声明方法时 参数的各种前缀是什么意思 sh cmd block 什么是 before cmd mean 什么是 before block mean 星号 意味着将所有剩余的参数组合到一个由该参数命名的列表中 与号 意味着如果给方法调用一个块
  • 从 NT 服务向远程桌面会话发送消息

    如何从 nt 服务向在远程桌面会话中启动的应用程序发送 sendmessage 和 postmessage 目前我通过应用程序之间的udp通信暂时解决了这个问题 您不能跨会话边界发送消息 因此 您需要一个 IPC 解决方案 例如 TCP I
  • 从另一个数组中过滤对象数组

    我有两个数组 我想过滤一个包含另一个数组中的对象的数组 let array1 date 1 count 4 date 3 count 6 let array2 1 2 3 4 过滤这两个数组后 我需要过滤后的数组 如下所示 let arra
  • 在 ASP.NET Core 中将 RTSP 流从 IP 摄像机转发到浏览器

    我有一个 Blazor 托管应用程序 我需要根据客户请求从 AXIS 摄像机获取 h264 录制内容 通过 RTSP PLAY 命令 并以浏览器可以重现视频的方式返回它 如果向 AXIS 摄像机查询录音列表 答案包括这个 即我尝试在浏览器上
  • Coldfusion 9.0.1 标准 64 位和 Oracle 11g 64 位 ODBC 连接导致“架构不匹配”

    我有一个新构建的 64 位 Windows Server 2008 R2 机器 上面安装了 64 位 Coldfusion 9 Standard 我已将其升级并修补至最新版本的 CF 我还在盒子上安装了 64 位 Oracle 11g 11
  • 如何在 C++20 中创建模板别名的推导指南?

    假设我有一个类 结构模板及其构造函数的显式推导指南 让这个类有两个模板参数 其中一个可以通过推导指南推导 另一个则不能 template
  • 不带小数的 LinearAxis

    我想避免我的轴中出现小数 我该怎么做 XAML
  • 如何调试 Swift PlaygroundBook?

    当我探索 Playground Book 示例代码时 例如this one 我发现运行代码非常乏味 因为 Playground Book 对代码运行位置的限制 只能在 iPad 的 Swift Playground 上运行 无法在 iOS
  • JAVA ArrayList:如何知道它是否包含字符串数组?

    import java util ArrayList public class Test public static void main String args ArrayList
  • Spring 3.1中可以和@Configuration结合使用吗

    我从 Spring 3 0 5 迁移到 3 1 因为我需要自定义 RequestMappingHandlerMapping 我在扩展 RequestMappingHandlerMapping 插件中遇到问题 我有现有的 servlet co
  • 定义一个新句柄(类似于STDOUT)

    当我注意到这一点时 我正在查看批量重定向句柄 这里是link 它提到句柄 3 9 未定义 可以由程序定义 现在我已经阅读了有关在 C 中执行此操作的信息 但我想知道这在 cmd batch 中是否可能 如果可以 它的限制 用途是什么 如果在
  • Gulp 似乎找不到指南针 mixins

    我正在尝试使用 gulp 作为 Grunt 的替代构建工具 将我的 scss 编译为 css 因为我听说它可以更快 我什至在对 scss 文件进行基本编译时都遇到问题 我尝试过使用gulp sass gulp ruby sass and g
  • Group By 子句中的无效列名错误

    我正在尝试为 rdlc 报告创建 Sp 其中我使用许多用户定义的函数进行计算 但是当我尝试在 group by 子句中使用函数别名时 会出现错误 Msg 207 Level 16 State 1 Line 14 无效的列名 CommPaid
  • 程序没有做它应该做的事 - C

    我编写了一个程序 从用户接收一系列数字 用户必须输入升序的数字 可以是4ex 1 2 2 3 7 8 0 并以 0 结尾 当然 如果没有 则会出现相应的错误消息 并且程序将关闭 我们可以确定用户会保留 Y 数组将是 如果 X 数组一切顺利的
  • 为什么两个字符串对象引用的串联不等于相同内容的字符串对象[重复]

    这个问题在这里已经有答案了 为什么下面s3 and s5 String对象不同 当s5尝试在字符串池中创建它检查内容s3已经有相同的内容了s5 refers s3字符串池中的对象 但我的假设是错误的 那么任何人都可以纠正我 String s