System.out.println((Class)a1.getClass() == a2.getClass());//自动类型提升进行比较
System.out.println((Class)a1.getClass() == (Class)a2.getClass());
//而对于a1和a3、a4的比较,直接用输出语句比较却会在编译时期就报错呢?
//System.out.println(a1.getClass() == a3.getClass()); 这样子比较编译报错是因为两个不同类型不能进行比较
//System.out.println(a1.getClass() == a4.getClass()); class [I == class [[I class [I == class [Ljava.lang.String
//但是,如果先把Class表示出来再比较就又没问题了。。。
Class c1 = (Class)a1.getClass();//这样子比较没问题 是因为所有类的父类是Class 自动向上转型后 类型都是父类型Class
//同种类型比较就没问题了。
Class c3 = a3.getClass();
Class c4 = a4.getClass();
System.out.println(c1 == c3);
System.out.println(c1 == c4);
//例子有助于你理解
Student st = new Student();
Teacher th = new Teacher();
//System.out.println(st==th); 不同的类型不能进行比较,编译编译报错
Person pst = new Student();
Person pth = new Teacher();
System.out.println(pst==pth);
System.out.println(pst==st); //这个还真是有趣 这样子也能比 父类和子类也能比 个人总结是因为有关系的才能进行比较 两个无关系的类不能进行比较
System.out.println(pst==th); //父类和子类进行比较时还会向上转型