黑马程序员技术交流社区

标题: 谁来告诉我下面JAVA中的匿名对象调用结果的解释啊? [打印本页]

作者: 翻滚吧!大牛!    时间: 2016-5-17 23:26
标题: 谁来告诉我下面JAVA中的匿名对象调用结果的解释啊?
/*
* 学生:
* 属性: 姓名name  年龄age
* 行为:睡觉 sleep
*
* */
public class Student_Test {

        public static void main(String[] args) {
       
                new Student().setName("momo");
                new Student().setAge(18);
                System.out.println(new Student().getName()+"..."+new Student().getAge());
               
                new Student().sleep();
        }
}

class Student {
        private String name;                                        //封装姓名
        private int age;                                                //封装年龄
       
        public void setName(String name){
                this.name = name;
        }
        public String getName() {
                return name;
        }
        public void setAge(int age){
                this.age = age;
        }
        public int getAge(){
                return age;
        }
       
        public static void sleep(){
                System.out.println("上课爱睡觉!");
        }
}


结果是  null   0    还有上课爱睡觉 ,前面两个答案有点不理解啊?
作者: 我有上将潘凤    时间: 2016-5-17 23:45
每一次new Student()都是创建一个对象的过程,你new了四次,有四个对象,
第一个对象你给他名字,第二对象你给他年龄,
第三个对象你什么都没对他做就输出name,当然结果也是初始值null,
第四个对象你什么都没对他做就输出age,当然结果是初始值0,

作者: 娶个英文名字    时间: 2016-5-18 00:41
new Student().setName("momo"); //相当于Student s = new Student;s.setName("momo");匿名对象返回的是一个对象,所以可以直接去调方法。下面的同上。
                 new Student().setAge(18);
                 System.out.println(new Student().getName()+"..."+new Student().getAge());
                 
                new Student().sleep();
作者: scalar    时间: 2016-5-18 12:45
每一个new字就是新建一个对象哦,兄弟。
System.out.println(new Student().getName()+"..."+new Student().getAge());
这句里面新建了两个对象,分别用空值和0给name和age赋值.说以输出null和0




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2