什么是 Java 字符串池, s"是怎样的?与新字符串( s")不同?

本教程将介绍什么是 Java 字符串池,“s"是怎样的?与新字符串(“s")不同?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

什么是 Java 字符串池, s"是怎样的?与新字符串( s")不同? 教程 第1张

问题描述

What is meant by ? And what is the difference between the following declarations:

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

Is there any difference between the storing of these two strings by the JVM?

解决方案

The string pool is the JVM's particular implementation of the concept of string interning:

In computer science, string interning
is a method of storing only one copy
of each distinct string value, which
must be immutable. Interning strings
makes some string processing tasks
more time- or space-efficient at the
cost of requiring more time when the
string is created or interned. The
distinct values are stored in a string
intern pool.

Basically, a string intern pool allows a runtime to save memory by preserving immutable strings in a pool so that areas of the application can reuse instances of common strings instead of creating multiple instances of it.

As an interesting side note, string interning is an example of the flyweight design pattern:

Flyweight is a software design
pattern. A flyweight is an object that
minimizes memory use by sharing as
much data as possible with other
similar objects; it is a way to use
objects in large numbers when a simple
repeated representation would use an
unacceptable amount of memory.

好了关于什么是 Java 字符串池,“s"是怎样的?与新字符串(“s")不同?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。