有脾气的小白
2021-11-04 13:38
采纳率: 100%
浏览 39
已结题

关于Java中equals和“==”在对象方面上的问题以及hashCode


public class Person {
    private int age;
    private String name;
    public Person(){

    }

    public Person(int age,String name){
        this.age = age;
        this.name = name;
    }
    public void show(){
        System.out.println(age+"\t"+name);
    }
    public static void main(String[] args) {
        System.out.println("hello01");
        Person p = new Person();
        Person p1 = new Person();
        System.out.println(p1.hashCode());
        System.out.println(p.hashCode());
        System.out.println(p==p1);
        System.out.println(p.equals(p1));
        System.out.println("-----------分割线--------------");

        Person a = new Person(18,"小明");
        Person a1 = new Person(18,"小明");
        System.out.println(a1.hashCode());
        System.out.println(a.hashCode());
        System.out.println(a==a1);
        System.out.println(a.equals(a1));
    }
}

问题1
equals比较的是两个对象的内容我认为应该是一样的,但是结果却是false,这个方法比较的到底是什么?

问题2
hashCode值打印出来后,关闭程序,然后重新打开IDEA运行还是原来的值,每次创建对象不都是随机地址吗?而且对象在用完后不是会被销毁吗?有点蒙了

求解答

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

3条回答 默认 最新