求教 java 字符串缓冲区和常量池有什么关联、关系?
2016-06-25 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
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保存对其的地址引用 然后还会将新创建的字符串"你好" 保存到字符串池中.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询