Java中 使用 == 可以来判断两个变量的值是否相等 他还可以判断两个对象的地址引用是否指向同一对象
equals 判断String类型的值是否相等,也可以判断两个对象的地址引用是否指向同一对象 返回值与==相同
hashcode 则是返回一个对象的 hash编码,返回为int型,一般是唯一的 equals判断的对象相等则两个对象的hashcode的返回值也相等
public static void main(String[] args) {
String a="100";
String i="100";
String b=new String("100"); //如果没写new 则在常量区 如果有new在堆中
Test c = new Test();
Test d = new Test();
Integer e=1;
Integer f=1;
int g=1;
int h=1;
System.out.println("=============String=================");
System.out.println("==:"+(a==b));
System.out.println("==:"+(a==i));
System.out.println("equals:"+a.equals(b));
System.out.println("===============对象===============");
System.out.println("==:"+(c==d));
System.out.println("equals:"+c.equals(d));
System.out.println("===============封装类===============");
System.out.println("==:"+(e==f));
System.out.println("equals:"+e.equals(f));
System.out.println("===============变量===============");
System.out.println("==:"+(g==h));
// System.out.println(g.equals(h)); 直接报错 equals不能用于变量 若想比较 必须使用封装类
System.out.println(a.hashCode());
System.out.println(i.hashCode());
System.out.println(b.hashCode());
System.out.println(c.hashCode());
System.out.println(d.hashCode());
}