<分区>
String s="hi";
String s1=new String("hi");
从内存的角度来看,s 和 s1 存储在哪里?无论是在堆内存还是栈中。
s指向“hi”,s1指向hi所在的内存位置?
请帮忙?
<分区>
String s="hi";
String s1=new String("hi");
从内存的角度来看,s 和 s1 存储在哪里?无论是在堆内存还是栈中。
s指向“hi”,s1指向hi所在的内存位置?
请帮忙?
最佳答案
考虑以下
String s = "hi";
String s1 = new String("hi");
变量 s
将引用字符串常量池中引用的字符串文字 hi
并且如果有更多变量,如 s2 = "hi"
,那么 s
和 s2
将引用同一个对象。
String s1 = new String("hi");
这将在运行时创建一个新的字符串。
在第一种情况下,所有的 strnig 文字都是在 JVM 中加载类时创建的
在秒的情况下,字符串对象在 new String()
被执行时被创建。
您可以在以下链接中找到有关字符串常量池的很好的教程
http://www.thejavageek.com/2013/06/19/the-string-constant-pool/
关于java - 带有新关键字的字符串和java中的直接赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17400099/
相关文章:
java - 未能找到 getChildren(),遵循 JavaFX WebKit 的 Oracle 官方指南
java - Spring-MVC、 hibernate : Creating DTO objects from Domain objects
java - 如何从 scala (casbah) 访问 mongoDB 中的二进制数据
c# - 如何比较 "look alike"的 Unicode 字符?
javascript - 在第 X 个位置间隔处使用正则表达式替换字符串 (javascript)