Java 中的字符串字面量如何以及存储在内存中的何处?

java 8object oriented programmingprogramming更新于 2025/4/26 19:22:17

Java 中的字符串用于存储字符序列,它们被视为对象。java.lang 包中的 String 类表示一个字符串。

您可以使用 new 关键字(像任何其他对象一样)或通过为字面量赋值(像任何其他原始数据类型一样)来创建字符串。

示例

public class StringDemo {
   public static void main(String args[]) {
      String stringObject = new String("Hello how are you");
      System.out.println(stringObject);
      String stringLiteral = "Welcome to Tutorialspoint";
      System.out.println(stringLiteral);
   }
}

输出

Hello how are you
Welcome to Tutorialspoint

字符串的存储

字符串存储在堆区域的一个单独的内存位置,称为字符串常量池。字符串常量池:它是一个单独的内存块,所有字符串变量都保存在其中。

当你将字符串存储为

String str1 = "Hello";

直接,JVM 会在 String 常量池 中创建一个具有给定值的 String 对象。

每当我们尝试创建另一个 String 时

String str2 = "Hello";

JVM 验证 String 常量池中是否存在具有相同值的 String 对象,如果存在,JVM 不会创建新对象,而是将现有对象的引用分配给新变量。

当我们将 String 存储为

String str = new String("Hello");

使用 new 关键字,无论 String 常量池的内容如何,​​都会创建一个具有给定值的新对象。


相关文章