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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 落星追恒 中级黑马   /  2016-1-15 22:17  /  985 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo {
public void method(Demo d){
System.out.println("调用我了")​;
}
}

new Demo().method(new Demo());
这样可以成功调用这个方法吗? 两个new是同一个对象吗?

5 个回复

倒序浏览
好复杂呢个好复杂
回复 使用道具 举报
记住 每new一次 就是重新创建一个对象,两个new不是同一个对象
new Demo().method(new Demo()); 括号里面的new Demo() 实际是作为一个引用参数传递给(Demo d) ,这个参数没有被调用,就会再堆内存变成垃圾,没有实际意义!
而打印输出的是的前面的method的方法之前的的匿名对象! 所以这两个匿名对象不是一个!
希望能帮到你!
回复 使用道具 举报
擎天柱 来自手机 中级黑马 2016-1-16 15:09:58
板凳
可以运行,不过项目里没有这么这样写的。
回复 使用道具 举报
tujiu888 发表于 2016-1-15 22:53
记住 每new一次 就是重新创建一个对象,两个new不是同一个对象
new Demo().method(new Demo()); 括号里面的n ...

讲得很好,谢谢,我也记住new了以后就是重新创建对象,就是对匿名对象的调用还有点模糊
回复 使用道具 举报
明显两个对象啊,new了两次
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马