一个小问题,帮小弟做一下内存分析!!

破Feel 2007-10-13 10:47:44
class Person{
String name;
void setName (String name){
this.name = name;
}
String getName(){
return name;
}
}

class Student{
public static void main(Strring[] args){
Person a = new Person();
a.setName("kakanu");
System.out.println(new Person().getName());// 用new Person()去调getNname方法结果为什么是null,而没得到返
//回值: kakanu ?
}
}
...全文
109 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
joejoe1991 2007-10-14
  • 打赏
  • 举报
回复
Person a = new Person(); 这里你声明了一个对象
调用a.setName给它赋值了

System.out.println(new Person().getName());// 这句话里的new Persion(); 你又声明了一个对象 你并没有给这个对象的name属性赋值 所以输出是null
liuqiancs 2007-10-14
  • 打赏
  • 举报
回复
因为在Person 类中的name定义为非static,所以当你new Person().getName()时候,实际上
创建了一个新的Person对象,name会再次被初始化,于是name = null,如果你在String name前面
加个static的话,那么得到的就是kakanu,即使你new Person().getName(),因为name成为
了共享的了
langzi606 2007-10-13
  • 打赏
  • 举报
回复
System.out.println(new Person().getName());在这句里面,你使用的new person()是构造了一个新的对象,这个对象跟你前面构造的那个对象a不是同一个对象。
破Feel 2007-10-13
  • 打赏
  • 举报
回复
本人很初级,还是有点不懂,Person 类中不是有返回语句 return name 吗?!!那么getaName()不就应该得到这个值吗??
langzi606 2007-10-13
  • 打赏
  • 举报
回复
new person()构造了一个新的匿名对象,你没有给他赋值,他返回的肯定是NULL啊。把System.out.println(new Person().getName());改成:System.out.println(a.getName());

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧