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 ?
  }
}

解决方案 »

  1.   

    new person()构造了一个新的匿名对象,你没有给他赋值,他返回的肯定是NULL啊。把System.out.println(new Person().getName());改成:System.out.println(a.getName());
      

  2.   

    本人很初级,还是有点不懂,Person 类中不是有返回语句 return name 吗?!!那么getaName()不就应该得到这个值吗??
      

  3.   

    System.out.println(new Person().getName());在这句里面,你使用的new person()是构造了一个新的对象,这个对象跟你前面构造的那个对象a不是同一个对象。
      

  4.   

    因为在Person 类中的name定义为非static,所以当你new Person().getName()时候,实际上
    创建了一个新的Person对象,name会再次被初始化,于是name = null,如果你在String name前面
    加个static的话,那么得到的就是kakanu,即使你new Person().getName(),因为name成为
    了共享的了
      

  5.   

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