zoukankan      html  css  js  c++  java
  • object类

    object是比较特殊的类,是所有类的父类,当一个类被创建后没有指定继承的父类,那么默认继承object类

    例:public class person{}和public class person extends object{}是一样的

    object中常用的两个方法equals()和string()

    一、equals()方法

          在学习听课过程中对equals很不理解,尤其是重写前后的作用以及和“==”的区别

          (1)“==”的含义

                基本数据类型:byte、short、int、long、double、float、Boolean、char之间比较的是值

                引用数据类型:比较的是在内存中的存储地址,是否是指向内存中的同一个对象

         (2)equals()

                  equals方法不能比较基本数据类型,只能比较引用数据类型

                 equals的源码:      public Boolean equals(object obj){

                                                             return(this==obj);                

                                                    }

                      初始默认行为是比较数据存储地址是否相同。jdk的类中有一些类覆盖率object类中equals()方法,比较规则:如果两个对象的类型一直,并且内容一直,则返回true。这写类有:string,file,date,包装类(integer,Double等)。

    也可以自己重写:

    第一种,没有重写,比较数据的存储地址

    public class person {
       private String name;
       private int age;
     
    public person() {}
       public person(String name,int age) {
           this.name=name;
           this.age=age;
       }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    }
    测试类:

    public class test {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
           person p=new person("徐",18);
          person p1=new person("徐",18);
          boolean b=p.equals(p1);
          System.out.println(b);
        }
    }

    p和p1的地址不同,返回值为false

    第二种:equals被重写

    public class person {
       private String name;
       private int age;
     
    public person() {}
       public person(String name,int age) {
           this.name=name;
           this.age=age;
       }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override

    //重写的equals方法
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        person other = (person) obj;
        if (age != other.age)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }
    }

    测试类:

    public class test {

        public static void main(String[] args) {
            // TODO Auto-generated method stub
           person p=new person("徐",18);
          person p1=new person("徐",18);
          boolean b=p.equals(p1);
          System.out.println(b);
        }
    }

    对象p的name和age与对象p1的name和age的值相等,b的值为true;

  • 相关阅读:
    Linux服务器上的node进程被kill问题排查
    轻松精通数据库管理之道——运维巡检系列
    30分钟带你熟练性能优化的那点儿事儿(案例说明)
    八年数据库之路的感悟
    SQL SERVER全面优化-------Expert for SQL Server 诊断系列
    入园记------我的DBA之路
    非常详细的 (VMware安装Centos7超详细过程)
    数据库自动收缩带来的严重问题
    解决数据库卡、慢,问题多,难管理——老技术的执著
    数据库优化案例——————某知名零售企业ERP系统
  • 原文地址:https://www.cnblogs.com/fbbg/p/10555805.html
Copyright © 2011-2022 走看看