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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© class1 中级黑马   /  2016-10-27 20:11  /  1222 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以字符串作为参数new一个string对象的时候,作为参数的字符串是在堆中创建还是在常量池中得到?
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

3 个回复

倒序浏览
有两份,一份在常量池中,一份在堆内存里
回复 使用道具 举报
这个看你在哪创建的,方法中,类中,都是不同的,方法中是在栈中,方法结束了就消失了,类中,一般随类加载而加载,在常量池中
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
String str = "aaa";以这种形式创建的字符串,是直接在常量池中的;String str1 = new String("aaa"); 出来的字符串先在堆内存中创建一个对象(存常量池中字符串的地址),然后再去常量池中找有没有这个字符串,如果有就把常量池中字符串的地址传给堆内存中的对象,如果没有就在常量池中创建一个.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马