toString()方法在没被重写前会 输出的是对象的地址值
public class TestString {
public static void main(String[] args) {
TestString a = new TestString("abc");
TestString b = new TestString("abc");
System.out.println(a);//day1211.TestString@512ddf17
System.out.println(a.equals(b));
}
String i;
public TestString(String i) {
this.i = i;
}
}
}
toString重写后输出的是对象的内容
package day1211;
public class TestString {
public static void main(String[] args) {
TestString a = new TestString("abc");
TestString b = new TestString("abc");
System.out.println(a);//TestString [i=abc]
System.out.println(a.equals(b));
}
String i;
public TestString(String i) {
this.i = i;
}
@Override
public String toString() {
return "TestString [i=" + i + "]";
}
}
equals在重写前比较的是两个对象的地址值
其中涉及到 (a==b)也是地址值的对比
并不会因toString()被重写而比较内容值
package day1211;
public class TestString {
public static void main(String[] args) {
TestString a = new TestString("abc");
TestString b = new TestString("abc");
System.out.println(a);
System.out.println(a.equals(b));//false
}
String i;
public TestString(String i) {
this.i = i;
}
@Override
public String toString() {
return "TestString [i=" + i + "]";
}
}
再被重写后比较的就是内容值
package day1211;
public class TestString {
public static void main(String[] args) {
TestString a = new TestString("abc");
TestString b = new TestString("abc");
System.out.println(a);
System.out.println(a.equals(b));//true
}
String i;
public TestString(String i) {
this.i = i;
}
@Override
public String toString() {
return "TestString [i=" + i + "]";
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
TestString other = (TestString) obj;
if (i == null) {
if (other.i != null)
return false;
} else if (!i.equals(other.i))
return false;
return true;
}
}