package com.lovecoding.day10.guanjian05;

public class TestPerson {
    public static void main(String[] args) {

//        Person person = new Person();
//        //输出对象的时候就是调用toString
//        System.out.println(person);
//        //toString
//        System.out.println(person);
//
//        /*
//        public void println(String x) {}
//
//        public void println(Object x) { //兼容匹配 多态参数
//         */
//
//        System.out.println("-----------------------------");
//
//        Object obj = new Person();
//
//        //class 属性 方法 构造方法 都存在 class
//        Class<?> aClass = obj.getClass();
//        System.out.println(aClass);
//
//        //方法
//        Method[] methods = aClass.getMethods();
//        System.out.println(Arrays.toString(methods));
//
//        //属性
//        Field[] fields = aClass.getDeclaredFields();
//        fields[0].setAccessible(true);
//        System.out.println(fields[0]);
//
//        //Object o = aClass.newInstance();
//
//        System.out.println("----------------------------");
//
//        Person p1 = new Person();
//        Person p2 = new Person();
//
//        System.out.println(p1.equals(p2));
//
//        System.out.println(1==1);


        /*
        public boolean equals(Object obj) {
            return (this == obj);
        }
         */

        //比较 对象内容 需要重写比较规则

        Person p11 = new Person("Aa",11);
        Person p22 = new Person("BB",11);

        System.out.println(p11.equals(p22));
        System.out.println(p11);
        System.out.println(p22);
        //调用equals方法之前
        //先调用hashcode值，确定是否是相同对象 调用equals比较。

        //hashcode 相同, 对象不一定相同 ， 相同的对象hashcode一定相同

        String a = "Aa";
        String b = "Aa";

        System.out.println(a.equals(b)); //String 中比较的你内容 ， 没有重写比较的 地址


        String a1 = "Aa";
        String b1 = "BB";

        System.out.println(a1.hashCode());
        System.out.println(b1.hashCode());

    }
}
