五、Object类里面最常用的两个方法toString()和equals()
所有的类都默认继承了Object类,但是如果是自己定义的类,建议重写里面的toString方法,不重写的话,打印的是类名+@+哈西码。String类自身重写了tostring
(Object类)
public class Helloworld1 {
public static void main(String args[]) {
Animal c = new Animal("jacky",20);
System.out.println(c);
}
}
class Animal {
String name;
int age = 10;
public Animal(String name,int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "name:"+name+";age:"+age;
}
}
....................................................................................................................................
==比较的是栈里面的内容,比较堆区的对象用equals(),并且当类是自己定义的时,equals()必须重写,重新给他比较的方法。
当equals方法重写后还要重写hashCode()方法,指定相同的对象必须具有相同的哈西码。 (Object类)
public class Helloworld1 {
public static void main(String args[]) {
Animal c1 = new Animal("jacky",20);
Animal c2 = new Animal("jacky",19);
System.out.println(c1.equals(c2));
}
}
class Animal {
String name;
int age;
public Animal(String name,int age) {
this.name = name;
this.age = age;
}
public boolean equals(Object obj) {
Animal p = (Animal)obj;
if(name == p.name && age == p.age) {
return true;
}else {
return false;
}
}
public int hashCode() {
return name.hashCode();
}
}
如果类不是自己定义的,就不用重写equals了
public class Helloworld1 {
public static void main(String args[]) {
String c1 = new String("jacky");
String c2 = new String("jacky");
System.out.println(c1.equals(c2));
}
}
浙公网安备 33010602011771号