字符串变量是对象还是成员变量吗?是在堆中还是在栈中 全局变量存在堆还是栈
更新时间:2021-11-21 11:01:16 • 作者:ROBIN •阅读 2987
字符串是对象吗?是对象的话,为什么存储在字符串常量池中呢?栈内存是不可已存储对象的
。。肯定是对象啊 java里面万物皆对象就看你怎么理解了
你自己看看源代码String这个类 你就明白了
当然String还是有点特殊的 “字符串常量池” 占内存 储存的是变量 它指向“字符串常量池”中的字符串
字符串对象和字符串变量的区别
字符串对象是具体的,能在运行的时候看得到的
而 字符串变量 是就是在编程的时候的一种变化的量
比如 dim a as string
a="123456"
a="4567
c++的成员变量是在堆还是栈区
成员变量并不能决定自身的存储空间位置。决定存储位置的对象的创建方式。
即:
如果对象是函数内的非静态局部变量,则对象,对象的成员变量保存在栈区。
如果对象是全局变量,则对象,对象的成员变量保存在静态区。
如果对象是函数内的静态局部变量,则对象,对象的成员变量保存在静态区。
如果对象是new出来的,则对象,对象的成员变量保存在堆区。
java中的String常量是存放在栈中还是堆中?
系统内存一般情况来说分为四个
heap 堆 放 对象 也就是new 出来的东西
stack 栈 放局部变量
static segment 静态区 用来放 静态变量 和字符串常量
data segement 代码区 用来放代码的
如果 一个字符串是 String s = "abc";它放在栈里
如果一个字符串 用创建对象的方式 String s = new String("abc");
那它是放在了 堆里 而如果单纯的 一个 "abc" 这个输入字符串常量 是放在static segement里