Java入门第89课——Object

Love The Way You Lie 2023-06-07 12:16 128阅读 0赞

1.1 Object

1.1.1 Object

· 在Java类继承结构中,java.lang.Object类位于顶端;

· 如果定义一个Java类时没有使用extends关键字声明其父类,则其父类默认为java.lang.Object类;

· Object类型的引用变量可以指向任何类型对象。

1.2 toString方法

1.2.1 如何重写toString方法

· Object类中的重要方法,用于返回对象值的字符串表示;

· 原则上建议重写,格式大多数遵循 “类的名字[域值]“,例如:

  1. public String toString(){
  2. return getClass().getName()
  3. +"[name="+name
  4. +",salary="+salary
  5. +",gender="+gender
  6. +"]";
  7. }

如何重写toString方法(续1)

· Java语言中很多地方会默认调用对象的toString方法:

- 字符串+对象,自动调用对象的toString方法

- System.out.print(任意对象),直接调用toString方法

· 如果不重写toString方法,将使用Object的toString方法,其逻辑为:

- 类名@散列码

· toString方法是非常有用的调试工具

· JDK中的标准类库中,许多类都定义了toString方法,方便用户获得有关对象状态的必要信息;

· 强烈建议为自定义的每一个类增加toString方法。

1.2.2 String重写toString方法

· String的toString()方法就是将自身返回了。

  1. public String toString(){
  2. return this;
  3. }

1.3 equals方法

1.3.1 equals方法

· Object中的equals方法,作用在于检测一个对象是否等于另外一个对象;

· 在Object类中,这个方法判断两个对象是否具有相同的引用,即是否为相同的对象;

· 在实际应用中,一般需要重写该方法,通过比较对象的成员属性,使该方法更有意义,例如:对于Cell类,如果不重写equals方法,下面代码在cell1和cell2指向同一个对象时才为true,可以将其重写为:当x和y坐标相等时两个对象即相等,这样更有意义一些。

cell1.equals(cell2);

1.3.2 如何重写equals方法

  1. public boolean equals(Object obj){
  2. if(obj==null){
  3. return false;
  4. }
  5. if(this==obj){
  6. return true;
  7. }
  8. if(obj instanceof Cell){
  9. Cell cell=(Cell)obj;
  10. return cell.row==row&&cell.col==col;
  11. }else{
  12. return false;
  13. }
  14. }

1.3.3 String重写equals方法

· String的equals方法用于比较两个字符串对象的字符序列是否相等。

  1. /** 测试字符串的比较 */
  2. public class Demo{
  3. public static void main(String[] args){
  4. String s1=new String("abc");
  5. String s2=new String("abc");
  6. String s3=new String("A");
  7. System.out.println(s1.equals(s2));//true
  8. System.out.println(s1.equals(s3));//false
  9. }
  10. }

1.3.4 equals和==的区别

· ==用于比较变量的值,可以应用于任何类型,如果用于引用类型,比较的是两个引用变量中存储的值(地址信息),判断两个变量是否指向相同的对象;

· equals是Object的方法,重写以后,可以用于比较两个对象的内容是否“相等”;

· 需要注意的是,Object默认的equals方法的比较规则同==

关注公众号,获取学习视频

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hvdWp1bmthbmczNjM_size_16_color_FFFFFF_t_70

发表评论

表情:
评论列表 (有 0 条评论,128人围观)

还没有评论,来说两句吧...

相关阅读