在Java中,每一个对象都有一个地址空间,在这空间保存着这个对象的值。
String的equals是对比他们的字符和字符序列是否是相同
Object对比的是引用的地址是否相同!
用下面的例子来说明。
String str1 = "aaa";
String str2 = "aaa";
String str3 = new String("aaa");
str1与str2使用的是同一地址空间,因为String使用的是对象池,对象池概念你再去百度一下。
而str3是new出来的,就相当于开辟了新的空间,地址也就跟str1,str2不一样的。
所以,下面输出的结果为:
System.out.println(str1.equals(str2)); --true,地址一样,值也一样
System.out.println(str1.equals(str3); --true,地址不一样,但是值一样
System.out.println(str1 == str2); --true,地址一样,值也一样
System.out.println(str1 == str3); --false,地址不一样,值一样,还是false
|