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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我看到别人总结的
2. String str2 = new String("abc");
    System.out.println(str2 == "abc");

步骤:
1) 栈中开辟一块空间存放引用str2;
2) 堆中开辟一块空间存放一个新建的String对象"abc";
3) 引用str2指向堆中的新建的String对象"abc";
4) str2所指代的对象地址为堆中地址,而常量"abc"地址在池中,输出为false;
然后有疑问在4) str2所指代的对象地址为堆中地址,而常量"abc"地址在池中,输出为false;这句中常量“abc”怎么来的,是创建对象 时由构造函数String()传进来的么还是别的方法,要是由他传进来的
那么是否在创建对象是同时定义了一个常量“abc”呢?
这里不懂求大神指导。非常感谢

4 个回复

倒序浏览

str2中存储的是堆内存地址New出来的那块空间 给你画了个图

无标题.png (51.95 KB, 下载次数: 21)

无标题.png
回复 使用道具 举报 1 0
農邨尛夥兒 发表于 2014-12-13 09:53
str2中存储的是堆内存地址New出来的那块空间 给你画了个图

哦,原来如此啊,谢谢大神;顺便问一句这个构造区是怎么回事?
回复 使用道具 举报
南柯一梦境 发表于 2014-12-13 10:51
哦,原来如此啊,谢谢大神;顺便问一句这个构造区是怎么回事?

JVM分配的吧  这个我还是真不知道啊:(
回复 使用道具 举报
哦,好的,不过还得谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马