不一样,因为内存的分配方式不一样。 String str="i" 的方式, Java 虚拟机会将其分配到常量池中;而
String str=new String("i") 则会被分到堆内存中。
代码示例:
String x = " 叶痕秋 " ;
String y = " 叶痕秋 " ;
String z = new String ( " 叶痕秋 " );
System . out . println ( x == y ); // true
System . out . println ( x == z ); // false
String x = " 叶痕秋 " 的方式, Java 虚拟机会将其分配到常量池中,而常量池中没有重复的元素,比如当
执行 叶痕秋 时, java 虚拟机会先在常量池中检索是否已经有 叶痕秋 ,如果有那么就将 叶痕秋 的地址
赋给变量,如果没有就创建一个,然后在赋给变量;
String z = new String(“ 叶痕秋 ”) 则会被分到堆内存中,即使内容一样还是会创建新的对象。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐