Java学习总结:15

Object类

Object类的基本定义

Object类是所有类的父类,也就是说任何一个类在定义时如果没有明确地继承一个父类,那它就是Object类的子类。
在这里插入图片描述

取得对象信息:toString()

在Object类中的toString()方法设计时,由于要考虑其可以满足所有对象的输出信息,所以默认返回的是对象的编码。

class Book1{	//此类为Object子类
    private String title;
    private double price;
    public Book1(String title,double price){
        this.title=title;
        this.price=price;
    }
    public String toString(){	//代替getInfo(),并且toString()可以自动调用
        return "书名:"+this.title+",价格:"+this.price;
    }
    //setter、getter、无参结构略
}
public class Test1_1_4_5 {
    public static void main(String args[]){
        Book1 b=new Book1("Java开发",79.9);		//实例化对象
        System.out.println(b);		//直接输出对象,默认调用toString()
    }
}

对象比较:equals()

例:实现对象比较

class Book14{
    private String title;
    private double price;
    public Book14(String title,double price){
        this.title=title;
        this.price=price;
    }
    public boolean equals(Object obj){
        if (this==obj){	//地址相同
            return true;
        }
        if (obj==null){	//对象内容为null
            return false;
        }
        if (!(obj instanceof Book14)){	//不是本类实例
            return false;
        }
        Book14 book=(Book14)obj;
        if (this.title.equals(book.title)&&this.price==book.price){
            return true;
        }
        return false;
    }
    public String toString(){	//替代了getInfo(),并且toString()可以自动调用
        return "书名:"+this.title+",价格:"+this.price;
    }
    //setter、getter、无参结构略
}
public class Test1_1_4_6 {
    public static void main(String args[]){
        Book14 b1=new Book14("Java开发",79.9);	//实例化对象
        Book14 b2=new Book14("Java开发",79.9);
        System.out.println(b1.equals(b2));	//对象比较
    }
}
//结果
//true

Object类与引用数据类型

例:接收数组数据

public class Test1_1_4_7 {
    public static void main(String args[]){
        Object obj=new int[]{1,2,3};	//向上转型
        System.out.println(obj);	//数组编码:[I@10f87f48
        if (obj instanceof int[]){	//谁是否int数组
            int data[]=(int[])obj;	//向下转型
            for (int x=0;x<data.length;x++){
                System.out.print(data[x]+"、");
            }
        }
    }
}
//结果
//[I@10f87f48
//1、2、3、

关于数组对象的编码问题:
只要是数组对象的直接输出,第一位都是"[",第二位是数组类型的简短标记,例如:int类型数组是I,double型数组是D,而后就是数组对象的编码。

例:Object类接受接口对象

interface A{
    public void fun();
}
class B extends Object implements A{	//所有类一定继承Object类,所以此处只是强调说明
    public void fun(){
        System.out.println("666");
    }
    public String toString(){
        return "2333";
    }
}
public class Test1_1_4_8 {
    public static void main(String args[]){
        A a=new B();	//实例化接口对象
        Object obj=a;	//接受接口对象
        A t=(A)obj;	//向下转型
        t.fun();	//直接调用出口方法
        System.out.println(t);	//直接调用toString输出
    }
}
//结果
//666
//2333
发布了49 篇原创文章 · 获赞 25 · 访问量 1533

猜你喜欢

转载自blog.csdn.net/weixin_45784666/article/details/104334497
今日推荐