黑马程序员技术交流社区

标题: 匿名对象作为参数传递的问题,求大神 [打印本页]

作者: 任长存    时间: 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