问题遇到的现象和发生背景
java中的String为什么可以使用==比较字符串内容?
package com.hspedu.poly_.test;
public class Person {
private String name;
private int age;
private char gender;
public Person(String name, int age, char gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof Person) {
Person p = (Person) obj;
return /*this.name.equals(p.name)*/ // equals 和 == 结果相同
this.name == p.name && //此处进行 == 比较地址 地址理应不同 但为什么会判断为true呢?
p.age == this.age &&
p.gender == this.gender;
}
return false;
}
}
-------------------------------------------
package com.hspedu.poly_.test;
public class EqualsExercise01 {
public static void main(String[] args) {
Person person11 = new Person("123", 123, '女');
Person p2erson22 = new Person("123", 123, '女');
System.out.println(person11.equals(p2erson22)); //true 为什么会判断为true呢?
String s1 = new String("java");
String s2 = new String("java");
System.out.println(s1 == s2); //false
System.out.println(s1.equals(s2)); //true 这种表达又符合地址比较
}
}
运行结果及报错内容
true
false
true
我的解答思路和尝试过的方法
https://www.cnblogs.com/syxchina/archive/2011/05/12/2197212.html