💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Java `String.intern()`方法示例 > 原文: [https://howtodoinjava.com/java/string/java-string-intern-method-example/](https://howtodoinjava.com/java/string/java-string-intern-method-example/) Java `String.intern()`返回字符串池中存在的相等字符串字面值的引用。 如果**字符串池**中存在现有的字符串字面值,则返回其引用。 否则,将创建具有相同内容的新字符串,并返回对新字符串的引用。 使用[`String.equals()`](https://howtodoinjava.com/java/string/string-equals-method/)方法检查字符串是否相等。 ## 1\. 字符串池 字符串池是堆内存中的保留内存区域,Java 用于存储字符串常量。 请注意,默认情况下 Java 字符串是不可变的。 Java 在字符串池中仅存储每个不同`String`值的一个副本。 它有助于在程序执行期间重用`String`对象以节省内存。 在运行的程序中可能有很多对字符串的引用,但是在字符串池中只有字符串的副本。 #### 1.1 两种创建字符串的方法 在 Java 中,我们可以通过两种方式创建字符串。 ```java String str1 = new String("hello world"); String str2 = "hello world"; ``` 在上面的示例中,两种方法都用于创建字符串,但是建议稍后使用字符串字面值。 **字符串字面值总是进入字符串池**。 当我们使用`new`关键字创建字符串时,将创建两个对象,即一个在堆区中,另一个在字符串常量池中。 创建的字符串对象引用始终指向堆区域对象。 要获取在字符串池中创建的相同对象的引用,请使用`intern()`方法。 ## 2\. Java `String.intern()`方法 `String.intern()`返回对字符串池中存在的相等字符串字面值的引用。 众所周知,所有字符串字面值都是在字符串池中自动创建的,因此`intern()`方法适用于通过`'new'`关键字创建的`String`对象。 `String.intern()`是**原生**方法。 借助`intern()`方法,可以获得原始字符串对象对应的`String`常量池对象的引用。 ## 3\. Java `String.intern()`示例 Java 程序使用`String.intern()`方法插入字符串。 ```java public class StringExample { public static void main(String[] args) { //String object in heap String str1 = new String("hello world"); //String literal in pool String str2 = "hello world"; //String literal in pool String str3 = "hello world"; //String object interned to literal //It will refer to existing string literal String str4 = str1.intern(); System.out.println(str1 == str2); //false System.out.println(str2 == str3); //true System.out.println(str2 == str4); //true } } ``` 程序输出。 ```java false true true ``` 在此示例中,我们学习了**内联 Java** 中的字符串。 这是本机方法,可提供**高性能**。 参考文献: [Java 字符串指南](https://howtodoinjava.com/java-string/) [`String` Java 文档](https://docs.oracle.com/javase/9/docs/api/java/lang/String.html)