zoukankan      html  css  js  c++  java
  • JAVA笔记7-Object类之toString方法和equals方法

    位于rt.jarjavalangObject.class

    Object类是所有Java类的根基类(Java中只有一个根基类,C++中有多个)。如果在类声明中未使用extends关键字指明其基类,则默认其基类为Object类。

    所有对象,包括数组,都实现了Object类的方法。

    1、toString()方法

    蓝色高亮行代码等价于d.toString()。输出:d:=Dog@757aef。重写toString()方法:

    2、哈希编码

    3、equals()方法

    例题:

    public class TestEquals{
        public static void main(String args[]){
            Cat c1=new Cat(1,2,3);
            Cat c2=new Cat(1,2,3);
            System.out.println("c1==c2: "+(c1==c2));//false
            System.out.println("c1.equals(c2): "+c1.equals(c2));//false
        }
    }
    class Cat{
        int colour;
        int high;
        int weight;
        public Cat(int c,int h,int w){
            colour=c;
            high=h;
            weight=w;
        }
    }

    注意:都返回false。因为比较两个对象时,c1==c2比较的是地址,c1.equals(c2)默认也是如此(只有当c1,c2指向同一对象时为true)。所以应重写equals()方法。

        //重写equals()方法
        public boolean equals(Object obj){
            if(obj==null){
                return false;
            }
            else if(obj instanceof Cat){
                Cat c=(Cat) obj;
                if(c.colour==this.colour&&c.high==this.high&&c.weight==this.weight){
                    return true;
                }
            }
                return false;
        }
    }

      重写equals()方法后,输出c1==c2:false,c1.equals(c2):true。

      JDK提供的一些类(如String,Date等),重写了Object的equals方法,调用这些类的equals方法时,x.equals(y),当x和y所引用的对象是同一类对象且属性相等时(并不一定是相同对象),返回true,否则返回false。对于用户自定义类型,可根据需要重写equals方法。

    public class TestEquals{
        public static void main(String args[]){
            String s1=new String("hello");
            String s2=new String("hello");
            System.out.println("s1==c2: "+(s1==s2));//false
            System.out.println("s1.equals(s2): "+s1.equals(s2));//true
        }
    }
  • 相关阅读:
    java设计模式----工厂模式
    使用.Net Core Mvc +SqlSugar +Autofac+AutoMapper+....
    使用 Date 和 SimpleDateFormat 类表示时间
    .Net Core 3.0 IdentityServer4 快速入门02
    .Net Core 3.0 IdentityServer4 快速入门
    微信小程序支付
    微信小程序集成腾讯云 IM SDK
    架构杂谈《十》
    架构杂谈《九》
    架构杂谈《八》
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3656172.html
Copyright © 2011-2022 走看看