打印对象和toString()方法
对于两个变量是否相等的判断有两种方法 : == 和 equals()
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1==str2); //Flase
System.out.println(str1.equals(str2));//True
因为new String()创建了两个对象而{==}只用于判断两个相同的对象的变量
equals()可以判断不同对象中的值是否相同
String str1 = new String (“hello”)
String str1先在常量池中创建了一个常量 new String(“hello”)创建了一个对象并且赋值了"hello"
相当于一句话创建了两个对象
str3中的两个字符串会直接从常量池中调用str1 str2
class Dog{}
person p = new person();
p.equals(new Dog());//判断 person对象是否equals Dog对象
因为 [==]只用于判断变量是否相同,那么我们是否可以重写.equlas()方法来进行更复杂的判断即当相同对象的里面的变量也相同的时候才输出 True
我们可以通过重写.equals()方法来实现(重写equlas()方法的同时 也要重写hashCode方法):
class extendedts1 {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean equals(Object obj) {
//判断是否两个对象为同一对象
if (this == obj)
{
return true;
}
//只有obj是extendedts1对象的时候
if (obj != null && obj.getClass() == extendedts1.class) {
//当前对象的name与obj对象的name相等的时候才能判断两个对象相等
extendedts1 extendedts1Obj = (extendedts1) obj;//把Obj对象转型成extendedts1对象并赋给extendedts1Obj
if (this.getName().equals(extendedts1Obj.getName()))
{
return true;
}
}
return false;
}
}
这样在调用extendedts1类的时候,使用里面的equals()方法,必须是同一个对象并且字符相同才输出True