首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一个小疑点,帮小弟做一下内存分析!

2012-02-05 
一个小问题,帮小弟做一下内存分析!!class Person{String namevoid setName (String name){this.name na

一个小问题,帮小弟做一下内存分析!!
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 ?
  }
}

[解决办法]
new person()构造了一个新的匿名对象,你没有给他赋值,他返回的肯定是NULL啊。把System.out.println(new Person().getName());改成:System.out.println(a.getName());
[解决办法]
System.out.println(new Person().getName());在这句里面,你使用的new person()是构造了一个新的对象,这个对象跟你前面构造的那个对象a不是同一个对象。
[解决办法]
因为在Person 类中的name定义为非static,所以当你new Person().getName()时候,实际上
创建了一个新的Person对象,name会再次被初始化,于是name = null,如果你在String name前面
加个static的话,那么得到的就是kakanu,即使你new Person().getName(),因为name成为
了共享的了
[解决办法]
Person a = new Person(); 这里你声明了一个对象 
调用a.setName给它赋值了

System.out.println(new Person().getName());// 这句话里的new Persion(); 你又声明了一个对象 你并没有给这个对象的name属性赋值 所以输出是null

热点排行