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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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() 放在里面呢? 跟匿名对象又有什么关系,我在自学基础课程,请指教

3 个回复

倒序浏览
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的名字省略,但是效果相同
           

回复 使用道具 举报
匿名对象只是为了简写代码,返回的数据并不使用任何变量接收,只使用一次
   只要记住,匿名对象只是为了只用一次的对象才使用匿名对象,作用就是简写代码
回复 使用道具 举报
2楼讲解得很详细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马