Java 中的字符串文字与字符串对象

2023-12-11

在java中字符串可以通过下面给出的两种方式创建

  1. String foo="Test";
  2. String fooobj=new String("Test");

到处都提到这两种创建字符串的方法之间的区别。我想了解更多什么是合适的场景, 我们应该去哪里

  String foo="Test";

以及什么时候去

 String fooobj=new String("Test");  ?

简短的回答:如果你有任何疑问,你就不想new String("literal here")。如果您需要它,您就会知道您需要它以及为什么需要它。

长答案:

基本上是您唯一想要使用的时间new String("literal here")是如果你想确保结果字符串对象不是==任何其他字符串对象。文字得到interned自动地;通过创建的字符串new String("literal here")不是。

那你为什么想要那个?答案是你几乎永远不会,因为String实例是不可变的,所以你不在乎是否共享String以其他事物为例。我能想象的唯一场景是,如果你有一个 API 接受String你想要一个标志值而不是null,并且您想通过检查该标志/标记值==, 像这样:

public static final String MARKER = new String("Marker");
public void someFictionalMethod(String arg) {
    if (arg == MARKER) {
        // Take action on the marker
    }
    else {
        // Take action on the string
    }
}

...即使那样,我也会发现它有点可疑,并会探索其他方法来做到这一点。

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

Java 中的字符串文字与字符串对象 的相关文章

随机推荐

  • 如何与主应用程序一起开发另一个子模块。 [作曲家,PHP]

    我知道 git 子模块是如何工作的 以及我们如何使用它 现在我所处的情况是 主应用程序依赖于许多其他作曲家软件包 并且我必须制作和开发一个与主项目 某种库 分开的另一个小软件包 那么我如何才能将这个小包与主项目一起开发 而不使其成为单独的项
  • 反应本机启动画面获取“React/RCTBridgeModule.h”文件未找到

    我使用以下命令启动了一个新的反应本机应用程序 react native init myApplication 我从启动画面开始 所以我使用了这个库反应本机启动画面 我使用以下命令链接该库以生成本机代码 react native link r
  • 如何将标准容器作为字段添加到 OMNet++ 消息中?

    我正在尝试创建一个简单的消息定义包含一个使用实现的字段std vector 根据OMNet 5 5 手册第 1 章6秒 8 1 这看起来很简单 However I m using OMNet 6 0pre6 I can t figure o
  • 单击退出按钮时未处理 Win32Exception - Visual Basic

    我正在使用 Microsoft Visual Studio 2010 32 位高级版 Microsoft Visual Basic 2010 构建表单 当我编译代码时没有任何错误 但是每当我单击退出按钮时 它都会显示以下消息 Win32Ex
  • blackberry os 7 模拟器未在我的系统上加载

    我已经安装了blackberry os 7模拟器 9900 9930 9850 当我打开模拟器时 会显示黑莓加载屏幕 但没有完全加载 长时间显示如下图所示 我删除了位于的 dmp 文件 C Program Files Research In
  • 使用 LINQ 获取平均值

    希望有人可以帮助我使用 LINQ 语法来计算平均值 例如 我有以下 LINQ 查询 var rates from rating in ctx Rates where rating Id Id select new UserId rating
  • C++如何替换构造函数开关?

    我想用更优雅的东西替换大开关 class Base public Base void data int size virtual void Something 0 class A public Base public A void data
  • ASP.NET 到 WCF - 直通安全性?

    我有一个位于 WCF 服务之上的 MVC 网站 WCF 服务还可以通过使用消息安全和证书的用户名 密码身份验证通过 Internet 进行访问 这是设置和工作 网站和服务都使用相同的会员商店 使用会员 API 用户可以使用相同的凭据登录网站
  • 重载加法、减法和乘法运算符

    如何重载加法 减法和乘法运算符 以便我们可以对两个不同或相同大小的向量进行加法 减法和乘法 例如 如果向量大小不同 我们必须能够根据最小向量大小对两个向量进行加 减或乘 我创建了一个函数 允许您修改不同的向量 但现在我正在努力重载运算符 并
  • PhoneGap 构建错误“插件不受支持:...”

    以下 config xml 会导致错误
  • 使用弹性搜索批量索引

    到目前为止 我一直在按文档将数据索引到弹性文档 现在随着数据开始增加 它变得非常慢 并且不是一种优化的方法 所以我正在寻找批量插入的东西并找到了 Elastic Bulk API 从他们官方网站的文档中我感到困惑 我使用的方法是将数据作为
  • 有什么简单的方法可以使 GPS 坐标变得粗略吗?

    我正在开发一个使用 GPS 坐标作为排行榜的 iPhone 应用程序 我不需要精确的坐标 实际上我不需要曾经想要坐标要准确 以保护用户隐私 我为desiredAccuracy指定了kCLLocationAccuracyThreeKilome
  • Spring OAuth2.0 - 动态注册OAuth2.0客户端

    我正在使用 Spring security 设置 OAuth2 0 授权服务器 我想知道是否有办法在OAuth2 0授权服务器启动并运行后动态注册OAuth2 0客户端 基本上 我知道我可以在配置 OAuth2 0 服务器时通过扩展来注册客
  • 圆角矩形背景编辑文本,背景边框左上角有提示

    我陷入了创建用户界面的困境 请帮我创建那个 我有一个具有圆角矩形边框的 EditText 这是可以的 但占位符位于边框的顶部 离开边框 这是图像 提前致谢 你必须使用矢量绘图用于根据需要创建自定义形状 我已经为此创建了一个示例 创造自定义向
  • 如何在一行中编写多个CSS选择器?

    我的问题是我想在单选中写这个 btn primary gt i glyphicon color ffffff btn primary gt span glyphicon color ffffff 但是这个 btn primary gt i
  • AWS Lambda - NodeJS POST 请求和异步写入/读取文件

    我是 NodeJS 新手 在 AWS Lambda 内部 我尝试发出一个 POST 请求 该请求使用 JSON 对象调用外部 API 使用响应创建一个文档 然后读取该文件的内容 来自 Ruby 背景 我认为问题源于我对异步编程的不熟悉 但我
  • ipython (jupyter) 笔记本中的动画 - ValueError: 对已关闭文件的 I/O 操作

    我有一个可以生成动画的 jupyter 笔记本 它在我的旧笔记本电脑 xubuntu gnu linux 上运行 现在在我的新笔记本电脑 trisquel gnu linux 上它无法工作 这让我觉得我缺少一个图书馆或类似的东西 但我无法解
  • 直接在 Outlook for iOS 中打开指向特定电子邮件的链接(URI 方案/深层链接)

    我正在尝试弄清楚如何在 iOS 上的 Outlook 应用程序中直接打开电子邮件 Microsoft Power Automate 的目标是通知我的垃圾邮件 并在流通知中包含一个链接 该链接指向垃圾文件夹中的邮件 以便它直接在 Outloo
  • 如何在 Windows Azure(操作系统或网站)中配置完美前向保密

    我想将我的网站迁移到 Windows Azure 但需要确保我在所有实例和角色上使用 PFS 还有常规网络角色和网站 如何配置以便每个部署都以这种方式自动配置 这篇优秀的文章 by 安德烈 N 克林斯海姆解释了在 Windows Serve
  • Java 中的字符串文字与字符串对象

    在java中字符串可以通过下面给出的两种方式创建 String foo Test String fooobj new String Test 到处都提到这两种创建字符串的方法之间的区别 我想了解更多什么是合适的场景 我们应该去哪里 Stri