java超乱,栈和常量池,字符串池,堆都是啥关系啊?乱成一锅粥了
2个回答
展开全部
java里的堆栈,常量池,用图形来表示的话会好理解下,不过不会上传图片,就简单的用文字描述下,希望能帮助你理解.
首先,java里new出来的对象都会存放在堆里.栈里可以存放对这些对象的指针的引用.
例如: A a=new A();
这里new出来的A对象会被存放在堆中,而 a呢.会被存放到栈里,并且保存了对A这个对象引用的地址.
栈的存放顺序是后进先出,如果你接触过数据结构的课程的话,这个并不难理解.
至于字符串池,是用来存放一些字符和栈和堆的关系,我们只需要这么理解,当我们创建一个字符串时,java会先在字符串池里寻找有没有你要创建的字符串.
例如: String a="你好";
先寻找字符串池里有没有 "你好" 这个字符串,如果存在,就不会在堆中再创建.
如果不存在,就会在堆中创建 "你好" 这个字符串 并在栈中生成 a保存对其的地址引用 然后还会将新创建的字符串"你好" 保存到字符串池中.
希望对楼主有帮助
首先,java里new出来的对象都会存放在堆里.栈里可以存放对这些对象的指针的引用.
例如: A a=new A();
这里new出来的A对象会被存放在堆中,而 a呢.会被存放到栈里,并且保存了对A这个对象引用的地址.
栈的存放顺序是后进先出,如果你接触过数据结构的课程的话,这个并不难理解.
至于字符串池,是用来存放一些字符和栈和堆的关系,我们只需要这么理解,当我们创建一个字符串时,java会先在字符串池里寻找有没有你要创建的字符串.
例如: String a="你好";
先寻找字符串池里有没有 "你好" 这个字符串,如果存在,就不会在堆中再创建.
如果不存在,就会在堆中创建 "你好" 这个字符串 并在栈中生成 a保存对其的地址引用 然后还会将新创建的字符串"你好" 保存到字符串池中.
希望对楼主有帮助
追问
汗,你能画好图后发到我邮箱吗?直接上传附件发给我就可以,我邮箱:731002322@qq.com
追答
已经发过去了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |