zoukankan      html  css  js  c++  java
  • object 类 toString() 和 equals() 的覆写

    基本作用:

    objiect类是所有类的父类。

    任何一个类定义的时候如果没有明确定义了父类的话,默认父类是Object类。

    class A extends Object{}

    在整个java里面,类的继承关系一直存在的。例如:

    String 类

    这时候一个好处就出现了,利用Object类可以接受一切类。

    Object obj = new Book() ;//向上转型

    Obect obj = “Hello”  ; //向上转型

    如果不知道参数类型的时候,使用Object是最好的选择

    http://docs.oracle.com/javase/7/docs/api/

    可以发现在Object类里面定义一个无参构造方法。

    这是为什么呢??

    因为Object类是所有类的父类,当对象实例化的时候,一定会默认调用父类的无参构造方法。

    他还提供了很多的方法。这些方法很重要。

    从严格意义上来讲(一般不遵守) ,任何一个简单Java类都应该覆写Object类的三个方法

    1.toString()

    2.equals(Object);对象比较方法

    3.public int hashCode()

    第一个方法:取得对象信息

    toString() :

    范例:

    class Book extends Object {}
    public class ObjectTest{
        public static void main(String arg[]){
            Book b = new Book() ;
            String s = "hello" ;
            System.out.println(b) ;
            System.out.println(b.toString());
            System.out.println(s) ;
        }
    }

    观察发现输出的结果第一行和第二行一样。

    这是因为输出对象的时候,会自动调用toString() 方法将对象变成字符串输出;

    所以,以后在使用的时候要覆写 Object类 的toString() 方法;

    class Book  {
        private String title ;
        private double price;
        public Book(String title ,double price){
            this.title = title ;
            this.price = price ;
        }
        public String toString(){
            return "title" + this.title + " , price :" + this.price ;
        }
    }
    public class ObjectTest{
        public static void main(String arg[]){
            Book b = new Book("Java",19.9) ;
            String s = "hello" ;
            System.out.println(b) ;
            System.out.println(b.toString());
            System.out.println(s) ;
        }
    }

    此时就会重写了toString()方法。就可以直接输出对象。

    第二个:对象比较

    equalls() ;

        public boolean equals(Object obj){
            if(this == obj) 
                return true ;
            if(obj  == null) 
                return false ;
            if(obj instanceof Book)  //判断是否是Book类型的实例化 
                return false ;
            Book book = (Book) obj ;
            if(this.title.equals(book.title) && this.price == book.price)
                return true ;
        }
  • 相关阅读:
    适配器
    适配器
    哈希容器
    迭代器
    redis介绍
    9内核同步介绍
    Redis基础数据结构
    springCloud-Eureka源码分析
    zookeeper伪分布式集群环境搭建
    消息队列核心-如何保证消息不丢失
  • 原文地址:https://www.cnblogs.com/da-peng/p/5125908.html
Copyright © 2011-2022 走看看