在 Java 中 String s1 = "Hello" 和 String s1= new String("Hello") 有什么区别?


当你直接以

String str1 = "Hello";

存储一个字符串时,JVM 会在存储在称为字符串常量池的一个独立内存块中创建具有给定值的一个字符串对象。



并且无论何时我们尝试通过

String str2 = "Hello";

创建另一个字符串时,JVM 都会验证字符串常量池中是否已存在具有相同值的字符串对象,如果是,则不会创建一个新的对象,而是将现有对象的引用赋给新变量。

而当我们使用

String str = new String("Hello");

new 关键字存储字符串时,无论字符串常量池的内容如何,都会创建一个具有给定值的新对象。

更新于:2020-02-19

3000 多次浏览

开启您的 职业

通过完成课程获得认证

开始学习
广告
© . All rights reserved.