关于String对象的内存分配问题?
今天看了 一下java 的书籍看到 下面的代码:
String str=new String("abc");
我想问的是 在这一句代码中的abc 是在堆内存中分配空间来保存吗? 栈空间只保存一个地址变量str吗?
str 是指向堆内存的"abc"的首地址吗?
str 能用static 来修饰吗?
----------------解决方案--------------------------------------------------------
是在堆内存分配空间的
str指向的就是"abc"的位置
str可以用static来修饰
----------------解决方案--------------------------------------------------------
那怎么来写呢?
老实编译不能通过。有错误
String static str1=new String("abc");
希望版主解答一下,谢谢
----------------解决方案--------------------------------------------------------
static String str1=new String("abc");
----------------解决方案--------------------------------------------------------
那这个时候的栈内存和堆内存里面分别是什么?
----------------解决方案--------------------------------------------------------
栈里面存着引用本身,堆里面存着数据
----------------解决方案--------------------------------------------------------
栈一般用来存放引用等地址类的数据(比如函数调用的入口,参数等),堆一般用来放置数据,对象等。(当然地址也算数据啦,你应该能体会这两者的区别)
----------------解决方案--------------------------------------------------------
谢谢! 结贴
----------------解决方案--------------------------------------------------------