


为什么'CaseInsensitiveString cis = new CaseInsensitiveString('Polish')”可以接受,而'String s = new String('silly')”则不鼓励内存优化
Nov 14, 2024 pm 02:09 PMJava 字符串内存优化:理解“String s = new String("silly")”
有人对以下建议提出了担忧避免编写像“String s = new String("silly")”这样的 Java 代码。虽然此建议对于优化 String 对象的内存使用有效,但可能不适用于其他类。
为什么“CaseInsensitiveString cis = new CaseInsensitiveString("Polish")”可以接受?
对象“cis”是 CaseInsensitiveString 类的实例。与 String 不同,CaseInsensitiveString 是一个用户定义的类,需要构造函数来创建对象。因此,需要使用语法“CaseInsensitiveString cis = new CaseInsensitiveString("Polish")”来用指定的字符串值初始化对象。
如何使 CaseInsensitiveString 的行为像 String 一样进行文字初始化?
要像 String 一样启用 CaseInsensitiveString 的文字初始化,可以实现以下:
- 创建自定义工厂方法: 在 CaseInsensitiveString 类中定义一个静态方法,该方法采用文字作为参数并返回使用该值初始化的类的实例。此方法将模仿字符串文字发生的隐式构造函数调用。
- 实现 valueOf() 方法: 重写从 Object 继承的 valueOf() 方法,该方法由 Java 内部使用从文字创建新的 String 实例。通过提供自定义实现,可以直接从文字创建新的 CaseInsensitiveString 对象。
为什么可以直接将文字传递给 String?
String是Java中的一个特殊类。它有一个预定义的内部字符串池,其中重复的字符串文字存储为对同一对象的引用。这消除了对同一字符串值使用多个 String 对象的需要,从而减少了内存消耗。
以上是为什么'CaseInsensitiveString cis = new CaseInsensitiveString('Polish')”可以接受,而'String s = new String('silly')”则不鼓励内存优化的详细内容。更多信息请关注PHP中文网其他相关文章!

热门文章

热门文章

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

2025年的前4个JavaScript框架:React,Angular,Vue,Svelte

如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?

如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?

Spring Boot Snakeyaml 2.0 CVE-2022-1471问题已修复
