public class Demo_20180218 {
/**
* true false true false true
* == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。
* equals 比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法。
* @param args
*/
public static void main(String[] args) {
String str0 = "12345";
String str1 = "12345";
String str2 = new String("12345");
String str3 = new String("12345");
System.out.println(str1 == str0); // true 比较值
System.out.println(str1 == str2); // false
System.out.println(str1.equals(str2)); // true用于引用值类型 ,只比较其值
System.out.println(str3 == str2); // false 引用类型,比较其值,实则比较内存值
System.out.println(str3.equals(str2)); // true用于引用值类型,只比较其值
}
}
/**
* true false true false true
* == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。
* equals 比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法。
* @param args
*/
public static void main(String[] args) {
String str0 = "12345";
String str1 = "12345";
String str2 = new String("12345");
String str3 = new String("12345");
System.out.println(str1 == str0); // true 比较值
System.out.println(str1 == str2); // false
System.out.println(str1.equals(str2)); // true用于引用值类型 ,只比较其值
System.out.println(str3 == str2); // false 引用类型,比较其值,实则比较内存值
System.out.println(str3.equals(str2)); // true用于引用值类型,只比较其值
}
}