从零开始学java(二十)--Object类中的toString方法;;;;;“==”与equals方法
Object类中的toString方法
Object类中定义有public String toString()方法,其返回值是 String 类型。Object类中toString方法的源码为:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
根据如上源码得知,默认会返回“类名+@+16进制的hashcode”。在打印输出或者用字符串连接对象时,会自动调用该对象的toString()方法。
package Chapter_5;
public class TestObject {
public static void main(String[] arge) {
// Object obj;
TestObject to =new TestObject();
System.out.println(to.toString());
Person_2 person_2 = new Person_2("与猫子", 20);
System.out.println(person_2.toString());
}
public String toString() {
return "test";
}
}
class Person_2{
String name;
int age;
@Override
public String toString() {
return name+"的年龄是"+age;
}
public Person_2(String name,int age) {
// TODO Auto-generated constructor stub
this.name=name;
this.age=age;
}
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
“==”与equals方法
- “==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。
- Object类中定义有:public boolean equals(Object obj)方法,提供定义“对象内容相等”的逻辑。比如,我们在公安系统中认为id相同的人就是同一个人、学籍系统中认为学号相同的人就是同一个人。
- Object 的 equals 方法默认就是比较两个对象的hashcode,是同一个对象的引用时返回 true 否则返回 false。但是,我们可以根据我们自己的要求重写equals方法。
package Chapter_5;
public class TestEquals {
public static void main(String[] args) {
Object obj;
String str ;
User u1 = new User(100,"与猫子","23165465");
User u2 = new User(100,"水猫子","23165465");
System.out.println(u1==u2);
System.out.println(u1.equals(u2));
String str_1 = new String("yu_mao_zi") ;
String str_2 = new String("yu_mao_zi");
System.out.println(str_1 == str_2);//引用类型,字符相同,不是同一个对象,结果false
System.out.println(str_1.equals(str_2));//这里equals方法是String类中默认的equals方法
}
}
class User{
int id ;
String name;
String pwd;
//@override
//这里是equals方法重写,默认方法可以按ctrl点击类名后查看。
public boolean equals(Object obj) {
if (this == obj)
return true;
if(obj==null)
return false;
if(getClass() != obj.getClass())
return false;
User other =(User) obj;
if(id != other.id)
return false;
return true;
}
public User(int id, String name, String pwd) {
super();
this.id = id;
this.name = name;
this.pwd = pwd;
}
}