Java String s="hello" 在内存中是什么状态

2025-05-14 13:16:53
推荐回答(5个)
回答(1):

字符串是一种特殊的对象它不储存在堆栈里 而是存在字符串常量池里 就算字符串失去了所有的引用也不会被垃圾处理器处理掉 所有的字符串都是唯一的对象
引用s当然是在栈里了

回答(2):

1. 单独使用""引号创建的字符串都是常量,编译期就已经确定存储到String Pool中;

  2,使用new String("")创建的对象会存储到heap中,是运行期新创建的;

  3,使用只包含常量的字符串连接符如"aa" + "aa"创建的也是常量,编译期就能确定,已经确定存储到String Pool中;

  4,使用包含变量的字符串连接符如"aa" + s1创建的对象是运行期才创建的,存储在heap中;

回答(3):

这样声明的String 都是存在常量池中的。没有进堆。
只有 new String("hello")这样才会存进 堆里,指向栈中的引用

回答(4):

栈区,如果是String s=new String(“hello”);在堆区

回答(5):

s在栈区,而hello在堆区,s指向堆中的hello的地址