1.toString方法
ps:Object类是所有类的公共父类,定义一个人类即默认继承Object类
当调用toString方法时,默认会返回一个字符串(该对象的地址值),但在应用中无意义
所以需要在子类中需覆盖重写该方法,通常让其返回对象的属性
public class ObjTostring { public static void main(String[] args){ student obj = new student(); System.out.println(obj.toString()); //student{num=30, name=‘张三‘} } } class student /*extends Object*/{ int num=30; String name = "张三"; @Override//对toString方法进行覆盖重写,返回对象的属性 public String toString() { return "student{" + "num=" + this.num + ", name=‘" + this.name + ‘\‘‘ + ‘}‘; } }
/*
equals方法的原型
public boolean equals(Object obj){
return (this=obj);
}
对于引用类型来说,调用equals默认比较的是两个对象的地址值;但通常两个对象的地址值是不相等的
所以默认比较的情况下意义不大,通常重写该方法让其比较对象的属性
*/
import java.util.Objects; public class objEquals { public static void main(String[] args){ //默认情况 Fame fame1 = new Fame(); Fame fame2 = new Fame(); System.out.println(fame1);//CommonAPItwo.Fame@4554617c System.out.println(fame2);//CommonAPItwo.Fame@74a14482 System.out.println(fame1.equals(fame2));//false //重写后 Fame fame3 = new Fame(20,"谷穗"); Fame fame4 = new Fame(20,"谷穗"); Fame fame5= new Fame(30,"谷穗"); System.out.println(fame3.equals(fame4));//true System.out.println(fame4.equals(fame5));//false } } class Fame { int year=00 ; String crop =" "; /* @Override public boolean equals(Object obj){ if(obj==this){//当obj就是调用方法的对象时直接返回true,提高效率 return true; } if (obj==null){//当obj为null时直接返回false,提高效率 return false; } if(obj instanceof Fame) {//提高代码安全性(可能传进来的对象不能向下转型) Fame f = (Fame) obj; boolean b = (this.year == ((Fame) obj).year && this.crop.equals(f.crop)); return b; } else return false; } */ @Override//IDE自动生成的重写后的equlas方法 public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; //与o == null或不是安全的向下转型效果一样 Fame fame = (Fame) o; return year == fame.year &&Objects.equals(crop, fame.crop); //Objects是一个工具类提供了一些空指针安全的方法操作对象(空指针是不能调用方法的) //Objects的equals方法比较两个对象,但是空指针安全 } public Fame(){ } public Fame(int year,String crop){ this.crop=crop; this.year=year; } }
原文:https://www.cnblogs.com/susexuexi011/p/13817400.html