黑马程序员技术交流社区
标题:
关于匿名对象的一个小问题,求解释!
[打印本页]
作者:
我行我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