什么是Java字符串池?“ s”与新的String(“ s”)有何不同?

如何解决什么是Java字符串池?“ s”与新的String(“ s”)有何不同??

开发过程中遇到什么是Java字符串池?“ s”与新的String(“ s”)有何不同?的问题如何解决?下面主要结合日常开发的经验,给出你关于什么是Java字符串池?“ s”与新的String(“ s”)有何不同?的解决方法建议,希望对你解决什么是Java字符串池?“ s”与新的String(“ s”)有何不同?有所启发或帮助;

问题描述

字符串池是JVM对字符串实习概念的特定实现:

在计算机科学中,字符串保留是一种仅存储每个不同的字符串值的一个副本的方法,该值必须是不变的。内部字符串使某些字符串处理任务更加节省时间或空间,但代价是在创建或嵌入字符串时需要更多时间。不同的值存储在字符串内部存储池中。

基本上,字符串内部存储池允许运行时通过在池中保留不可变的字符串来节省内存,以便应用程序的区域可以重用公共字符串的实例,而不是为其创建多个实例。

有趣的是,字符串实习是flyweight设计模式的一个示例:

Flyweight是一种软件设计模式。flyweight是通过与其他类似对象共享尽可能多的数据来最大程度减少内存使用的对象。当简单的重复表示使用不可接受的内存量时,这是一种大量使用对象的方法

解决方法

字符串池是什么意思?以下声明之间有什么区别:

String s = "hello";
String s = new String("hello");

JVM存储这两个字符串之间有什么区别吗?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

猜你在找的编程问答相关文章

怎样才能让 Git“忘记”一个被跟踪但现在在 .gitignore 中的文件?
Python 中的metaclasses是什么?
如何在 Linux 上查找包含特定文本的所有文件?
如何从异步调用返回响应
如何在一个表达式中合并两个字典(取字典的并集)?
HTTP 中的 POST 和 PUT 有什么区别?
使用 Git 将最近的提交移动到新分支
在 JavaScript 比较中应该使用哪个等于运算符 (== vs ===)?
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注