黑马程序员技术交流社区
标题:
匿名对象作为参数传递的问题,求大神
[打印本页]
作者:
任长存
时间:
2016-1-3 15:41
标题:
匿名对象作为参数传递的问题,求大神
class Student {
public void show() {
System.out.println("我爱学习");
}
}
class StudentDemo {
public void method(Student s) {
s.show();
}
}
class NoNameDemo {
public static void main(String[] args) {
Student s = new Student();
s.show();
s.show();
System.out.println("--------------");
new Student().show();
new Student().show();
StudentDemo sd = new StudentDemo();
sd.method(new Student());
new StudentDemo().method(new Student());
}
}
第2个类是传递一个,对象进去,那么整个代码为什么要把new Student() 放在里面呢? 跟匿名对象又有什么关系,我在自学基础课程,请指教
作者:
z.qi
时间:
2016-1-3 20:10
sd.method(new Student());
new StudentDemo().method(new Student());
楼主是问最后两句吧.
第一句理解:
sd.method(new Student()); 等价于
Student s = new student();
sd.method(s);
匿名对象 顾名思义就是省略名字的对象,一般用于该对象只使用一次 或者 此对象名字不重要,根本不需要知道.
本行中省略了s变量, 即在堆中new了student的对象,但是不用在栈内存中开辟变量空间s.
第二句理解:
new StudentDemo().method(new Student()); 等价于
StudentDemo sd = new StudentDemo();
Student s = new student();
sd.method(s);
如上所属,sd,s的名字省略,但是效果相同
作者:
549208564
时间:
2016-1-3 20:34
匿名对象只是为了简写代码,返回的数据并不使用任何变量接收,只使用一次
只要记住,匿名对象只是为了只用一次的对象才使用匿名对象,作用就是简写代码
作者:
luyang18
时间:
2016-1-3 22:00
2楼讲解得很详细
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2