黑马程序员技术交流社区

标题: 关于匿名对象的一个小问题,求解释! [打印本页]

作者: 我行我SHOW‰    时间: 2014-8-5 02:58
标题: 关于匿名对象的一个小问题,求解释!
class Student{
   
   private String name ;

   void setName(String name){
      
     this.name = name;
    }
   String getName(){

       return name;
    }
   


    void study(){
      
      System.out.println("Love Java");
   }


}

class TestStudent{
  
  public static void main(String args[]){

     Student s = new Student();

      new Student().study();  

       s.study();            

      new Student().setName("zhangsan");  //匿名对象传递"zhangsan"给setName()

          System.out.println(new Student().getName());//此处应该返回"zhangsan"名字,但输出却是null

       s.setName("lisi");

          System.out.println(s.getName());

   
    }


}


PS:为什么匿名对象传递“zhangsan”名字后,返回值为null ?
作者: MeloX    时间: 2014-8-5 04:16
这个问题就不多做解释了,你一共new了4个对象,三个匿名对象,每个都在堆区有自己的空间. 栈中并没有变了指向,所以在你new Student().setName("zhangsan");  之后就没用了,只能坐等gc(),   System.out.println(new Student().getName());这句相当于你又new了一个对象,并没有赋值,打印的只是name字段的默认值null,困了,多去看看视频吧。。
作者: 我行我SHOW‰    时间: 2014-8-5 06:51
MeloX 发表于 2014-8-5 04:16
这个问题就不多做解释了,你一共new了4个对象,三个匿名对象,每个都在堆区有自己的空间. 栈中并没有变了指 ...

谢谢回复,我回去再将这部分补习下~~~
作者: dreamseekerkun    时间: 2014-8-5 14:25
匿名对象只对函数进行一次调用时有效,new一下就等于第二个对象了,2楼讲解比较清楚。
作者: 小洁呵呵    时间: 2014-8-6 13:38
这两个对象不是同一个对象。。。。




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