问题中的String指的应该是java中的String吧。
这里给出的回答针对java。
String是一个不可变的对象,在java中只能作为常量使用。
java代码中所有的显式字符串,即直接写出的那种字符串,例如”abc”都是String对象。
String本身作为一个对象,必然是在堆上的,而String中的内容char[] value 则是放在堆中的一个特殊区域中——常量区。
所以String本身是放在堆上,而根据垃圾回收情况,又可以分为新生代和老年代。
如果这个String对象刚创建不久,则它一般位于堆的新生代,如果它创建之后存在了很长时间,则它很可能处于堆中的老年代。
注意,String中的字符串内容即字符数组value则位于堆中的常量区。
如果你先有一个字符数组,例如char[] arr { ‘a’, ‘b’, ‘c’ },然后调用String s = new String(arr);创建的String,则字符数组不再是位于常量区,而是跟其他对象一样,位于堆上。
注意,即使这个arr数组是在栈上分配的,这样创建的String中的value依然是在堆上。
如果你想把这个字符串放进常量区,可以调用String.intern。
栈上不会有对象,只会有基本变量和引用变量,所以String只可能位于堆上,不可能位于栈上。
下一篇:谭咏麟的人品怎么样?
- 夏天的风 姑娘 老男孩 理想三旬 月半小夜曲 生日快乐 其实 那些年 光阴的故事 少年 后来遇见他 那女孩对我说 世界这么大还是遇见你 火红的萨日朗 想见你想见你想见你 冬眠 关键词 芒种 往后余生 关山酒 年轮说 小镇姑娘 烟雨行舟 记念 你笑起来真好看 来自天堂的魔鬼 学猫叫 你的酒馆对我打了烊 不仅仅是喜欢 浪人琵琶 卡路里 带你去旅行 红昭愿 纸短情长 最美的期待 体面 小跳蛙 悬溺 侧脸 山楂树之恋 我的名字 失眠飞行 有可能的夜晚 追光者 请先说你好 流浪 东西 星球坠落 我的将军啊 烟火里的尘埃 答案 心如止水 我们不一样 嘴巴嘟嘟 晴天 成都 告白气球 南山南 女儿情 天空之城
报歉!评论已关闭。