黑马程序员技术交流社区

标题: 一个关于String str=new String()的问题 [打印本页]

作者: 南柯一梦境    时间: 2014-12-13 09:14
标题: 一个关于String str=new String()的问题
我看到别人总结的
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”呢?
这里不懂求大神指导。非常感谢
作者: 農邨尛夥兒    时间: 2014-12-13 09:53

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

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

无标题.png

作者: 南柯一梦境    时间: 2014-12-13 10:51
農邨尛夥兒 发表于 2014-12-13 09:53
str2中存储的是堆内存地址New出来的那块空间 给你画了个图

哦,原来如此啊,谢谢大神;顺便问一句这个构造区是怎么回事?
作者: 農邨尛夥兒    时间: 2014-12-13 12:35
南柯一梦境 发表于 2014-12-13 10:51
哦,原来如此啊,谢谢大神;顺便问一句这个构造区是怎么回事?

JVM分配的吧  这个我还是真不知道啊:(
作者: 南柯一梦境    时间: 2014-12-13 19:39
哦,好的,不过还得谢谢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2