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;

  • 相关阅读:
    2nd
    C#连接Sqlite 出现:混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。的解决方案
    后端项目与钉钉接口(第三方)对接要注意的问题
    springboot的第一节课
    - Missing artifact com.jate.fk.base:fk-base-service:jar:1.0.1
    Android框架模式
    函数的定义与调用
    kotlin基础
    观察者模式
    实现单例的六种方式
  • 原文地址:https://www.cnblogs.com/fbbg/p/10555805.html
Copyright © 2011-2022 走看看