今天遇到个==和equals比较的问题
查了下资料具体的解释是:
==比较的是内存地址是否相同
equals比较是否是同一个对象 ,比较对象内容
本着“实践出真知”的理念而做了以下试验:
String st1 = "duan";
String st2 = "duan";
System.out.println(st1==st2); true
System.out.println(st1.equals(st2)); true
String s1 = new String("duan");
String s2 = new String("duan");
System.out.println(s1==s2); false
System.out.println(s1.equals(s2)); true
Integer int1 = new Integer(1);
Integer int2 = new Integer(1);
System.out.println(int1==int2); false
System.out.println(int1.equals(int2)); true
int in1 = new Integer(1);
int in2 = new Integer(1);
System.out.println(in1==in2); true
Integer int3 = new Integer(1);
int in3 = new Integer(1);
System.out.println(int3==in3); true
System.out.println(int3.equals(in3)); true
Integer integer1 = 1;
Integer integer2 = 1;
System.out.println(integer1==integer2); true
System.out.println(integer1.equals(integer2)); true
String str3 = new String("1d");
String st3 = "1d";
System.out.println(str3==st3); false
System.out.println(str3.equals(st3)); true
结论:
一般类型的时候两者没有什么区别,可以说是一样的
但是表示对象并且两者之间分配的内存单元不一样的时候两者就存在区别