如题 在内存中 hello是存储在堆内存中 然后s在栈内存中存储指向堆内存hello的地址
还是hello直接存储在栈内存中
Java String s="hello" 在内存中是什么状态
答案:6 悬赏:30 手机版
解决时间 2021-12-29 19:39
- 提问者网友:感性作祟
- 2021-12-28 21:27
最佳答案
- 五星知识达人网友:duile
- 2021-12-28 21:39
字符串是一种特殊的对象它不储存在堆栈里 而是存在字符串常量池里 就算字符串失去了所有的引用也不会被垃圾处理器处理掉 所有的字符串都是唯一的对象
引用s当然是在栈里了
引用s当然是在栈里了
全部回答
- 1楼网友:底特律间谍
- 2021-12-29 01:35
s在栈内存中存储指向堆内存hello的地址
- 2楼网友:过活
- 2021-12-29 00:00
如果是直接赋值的是取常量池的数据, 如果是new的,永远都是重新创建内存.
所以 s == d 因为在object比较中 ==比较的是内存地址, 而new string()是告诉jvm重新创建一块内存.
- 3楼网友:慢性怪人
- 2021-12-28 23:31
栈区,如果是String s=new String(“hello”);在堆区
- 4楼网友:拜訪者
- 2021-12-28 23:18
这样声明的String 都是存在常量池中的。没有进堆。
只有 new String("hello")这样才会存进 堆里,指向栈中的引用
- 5楼网友:十鸦
- 2021-12-28 22:15
1. 单独使用""引号创建的字符串都是常量,编译期就已经确定存储到String Pool中;
2,使用new String("")创建的对象会存储到heap中,是运行期新创建的;
3,使用只包含常量的字符串连接符如"aa" + "aa"创建的也是常量,编译期就能确定,已经确定存储到String Pool中;
4,使用包含变量的字符串连接符如"aa" + s1创建的对象是运行期才创建的,存储在heap中;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯