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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 别小乐 中级黑马   /  2014-5-8 10:29  /  1404 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天学习Java编程思想,看到初始化部分的构造器产生一个疑问.特此求助与讨论!
书中是这么表述的: 
  从概念上讲,"初始化"与"创建"是彼此独立的,但是在Java中,"初始化"和"创建"是绑定在一起的,两者不能分离.
  同时,构造器是一种特殊类型的方法,构造器不会返回任何东西.

疑问:
  我打个比方: String a = new String("aa"); 这个语句,在new String("aa")中,在堆中创建了一个对象,同时,由于我们传递了参数"aa",
  (我们知道默认构造函数是用于"初始化的",)  在new String()中调用默认构造器完成对象的创建,同时这个对象,指向了常量池(位于ROM)中的常量字符   串"aa".
  此时,我们完成了一个String对象的"初始化"和"创建",
  同时,疑问来了,这个新的String对象的引用是在那里出来的? 通过什么方式创建出来的? 是在什么赋给Stirng a; 这个变量的?
  求解答! 谢谢各位!
  不知道我这样表达是否清晰!


2 个回复

倒序浏览
String a = new String("aa")
新的String对象的引用就是字符串变量a,这个字符串变量a通过String a创建的,存在于栈中,
再通过赋值符"="将右边new创建的对象new String(
"aa")的内存地址赋值给变量a.
new String("aa")中有两个对象,一个是字符串常量"aa"是一个对象,在常量池中
另一个则是通过new创建的字符串对象,存在于堆中,赋值给变量a的是new创建的对象

回复 使用道具 举报
thinkervsruler 发表于 2014-5-8 11:04
String a = new String("aa")
新的String对象的引用就是字符串变量a,这个字符串变量a通过String a创建的, ...

谢谢您的回复,学习了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马