【Object】
在Java类继承结构中,java.lang.Object类位于顶端。
如果定义一个Java类时没有使用extends关键字声明其父类,则其父类默认为java.lang.Object类。例如:
public class Demo(这里默认有extends Object){
public static void main(String[] args){
Demo d=new Demo();
d.toString();//该类没有定义toString方法,但是这里不报错,说明该方法来自父类Object
}
}
Object类型的引用变量可以指向任何类型对象。
【toString方法】
1、如何重写toString方法
Object类中的重要方法,用于返回对象值的字符串表示;原则上建议重写,格式大多数遵循"类的名字[域值]",例如:
public String toString(){
return getClass().getName()+"[name="+name+",salary="+",gender="+gender+"]";
}
Java语言中很多地方会默认调用对象的toString方法:
1)字符串+对象,自动调用对象的toString方法
如果不重写toString方法,将使用Object的toString方法,其逻辑为:
-类名@散列码
toString方法是非常有用的调试工具;JDK中的标准类库中,许多类都定义了toString方法,方便用户获得有关对象状态的必要信息。
强烈建议为自定义的每一个类增加toString方法。
2、重写Cell的toString()方法
public class Cell{
/** 重写toString方法,返回对cell信息的描述 */
@Override
public String toString(){
return getClass().getName()+"["+row+","+col+"]";
}
}
3、String重写toString
当使用一个类的toString方法时,就应当重写该方法,因为Object提供的toString格式为:类名@地址。通常这个对我们了解当前实例信息没有帮助。
String的toString()方法就是将自身返回了。
public String toString(){
return this;
}
【equals方法】
Object中的方法,作用在于检测一个对象是否等于另外一个对象;在Object类中,这个方法判断两个对象是否具有相同的引用,即是否为相同的对象;在实际应用中,一般需要重写该方法,通过比较对象的成员属性,使该方法更有意义,例如:对于Cell类,如果不重写equals方法,下面代码在cell1和cell2指向同一个对象时才为true,可以将其重写为:当x和y坐标相等时两个对象即相等,这样更有意义一些。
cell1.equals(cell2);
1、如何重写equals方法
public boolean equals(Object obj){
if(obj==null){
return false;
}
if(this==obj){
return true;
}
if(obj instanceof Cell){
Cell cell=(Cell)obj;
return cell.row==row&&cell.col==col;
}else{
return false;
}
}
2、String重写equals方法
String的equals方法用于比较两个字符串对象的字符序列是否相等。
/** 测试字符串的比较*/
public class Demo{
public static void main(String[] args){
String s1=new String("abc");
String s2=new String("abc");
String s3=new String("A");
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//false
}
}
3、equals和==的区别
==用于比较变量的值,可以应用于任何类型,如果用于引用类型,比较的是两个引用变量中存储的值(地址信息),判断两个变量是否指向相同的对象;equals是Object的方法,重写以后,可以用于比较两个对象的内容是否“相等”;需要注意的是,Object默认的equals方法的比较规则同==。
领取专属 10元无门槛券
私享最新 技术干货