示例代码
1.1,String类(引用类型)
- <span style="font-family: KaiTi_GB2312; font-size: 18px">String str1="test";
- String str2="test";
- //true true
- System.out.println(str1==str2);
- System.out.println(str1.equals(str2));
- String str3=new String("test");
- String str4=new String("test");
- //false true
- System.out.println(str3==str4);
- System.out.println(str3.equals(str4));
- String str5=str1;
- //true true
- System.out.println(str5==str1);
- System.out.println(str5.equals(str1));
- String str6=str3;
- //false true
- System.out.println(str6==str1);
- System.out.print(str6.equals(str1));</span>
刚开始,以为“==”是比较值,equals是比较引用对象,请看下面的经典论断(主要是针对str3和str4):
1:==比值,这两个值都是test,应该是true,可结果是false,后面那个equals比较对象,两个都是new的,应该不一样,可结果是true
2:==比值,因为这两个不是简单类型,无法比较,所以返回false;equals 比较对象,此时str3 和str4新创建了两个字符串对象,这两个对象是一样的,返回true
3:如果是byte、int、boolean、long,float,这些的话,==就是比较值,equals比对象,是吧
1.2,Integer类(int的包装类,非8种基本类型)
- <span style="font-family: KaiTi_GB2312; font-size: 18px">Integer int1=1;
- Integer int2=1;
- //true true
- System.out.println(int1==int2);
- System.out.println(int1.equals(int2));
- Integer int3=new Integer(1);
- Integer int4=new Integer(1);
- //false true
- System.out.println(int3==int4);
- System.out.println(int3.equals(int4));
- Integer int5=int1;
- //true true
- System.out.println(int5==int1);
- System.out.println(int5.equals(int1));
- Integer int6=int3;
- //true true
- System.out.println(int6==int3);
- System.out.print(int6.equals(int3));</span>
结果和String类一致!