构造方法中没有给变量赋值public Person(int age, String name) {
this.name = name;
this.age = age;
}这样写就可以了.

解决方案 »

  1.   

    你重写equals 怎么还在红色代码里调用equals,把equals改成==就对了。还有重写equals没这么简单,还要重写hasCode。相关的查一下。
      

  2.   

    //重写equals()方法
    @Override
    public boolean equals(Object obj) {
    if(obj==null){
    return false;
    }
    if(obj==this){
    return true;
    }
    if (obj instanceof  Person) {
    Person person = (Person) obj;
    return this.age == person.age && this.name == person.name ;
    }
    return false;
    }
    注意:重写了equals()方法,必须要重写hashCode()方法
      

  3.   


    public Person()
    {
    }public Person(int age, String name)
    {
    this.age = age;
    this.name = name;
    }
      

  4.   

     构造方法里面没把name 赋值,导致name 是null, null.equals()肯定报空指针
      

  5.   

    1.构造器没给属性(实例变量)赋值
    2.还有equlas方法没有考虑到参数是null的情况下,
    应该这样写
    if(obj == null){
    return false;
    }
      

  6.   

    int 有默认值,String没默认值,为Null的时候报空指针错误。
      

  7.   


    如果我不用HashMap,有必须重写hashCode的理由吗?
      

  8.   

    构造方法没有赋值,还有重写equals()方法,得重写hashCode()方法,你的queals()方法缺少一个空指针判断、改好了再试试吧。
      

  9.   

    Person 的name 是String 对象,需要对所有成员对象做null判断,
    如果两个对象对应的成员对象都是null,那就可以认为equal
      

  10.   

    上面的哥们说的是了,
    构造函数  Person(int age,String name)
    中没有赋值给 name属性(age可以不管,因为它是基本数据类型).
    但是你在主函数中,红色部分调用了 Perosn中重写的 equals方法,equals方法中使用了 name调用方法,但是name如果没有制定赋值的话,默认是null
    (因为name是String'属于引用类型').
    NullPointerException就是 null值的引用调用方法引起的.
    说的很清晰了.