A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘彦宗 中级黑马   /  2015-10-15 10:25  /  398 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String a=new String("abc");    String a="abc";
// 他们分别是在内存中怎么进行的呢?

1 个回复

倒序浏览
我的理解是   堆:存放所用new出来的对象   栈:存放对象的引用(也就是地址),基本数据类型产生的变量   常量池:(这个比较特殊)是用来存放String常量,如“abc”。那我的第一个 a在栈中 是引用,然后再堆中new出一个对象“abc”。第二个a则是先声明一个字符串常量,首先在池中查找有没有这个“abcdef”,如果没有,在池中产生一个“abcdef”,然后把引用赋值给栈中的a
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马