java 中的Object

本文介绍了Java中如何重写equals()方法实现对象的比较,并演示了如何通过重写toString()方法来自定义对象的输出格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java内存空间:栈  堆  方法区  本地方法区  

1.带有native 修饰的就是本地方法,调用的是系统内的有关C的东西

2.println():这也是一个方法,输出的都是字符串

3.println(P):打印一个对象(自动调用了toString() 方法),结果为:对象对应的类名@和对应的哈希值——class@哈希值

当P=null时:输出——null

在Object中有一个将对象转化为字符串的方法   toString(无参);可以在子类中重写这个方法输出你想输出的

【1】比较对象是否相等:public boolean  equals(Object obj)

根据判断的准则不同重写自定义比较方法


【2】自定义输出:重写toString()  (格式输出:输出字符串) 输出自己想要的内容

代码示例:

package Exercises;
/*
任何一个类都是Object 的子类都具有父类的方法
介绍两种方法的使用:1.比较对象是否想到等
                   2.字符串输出
参考工具:1.Java的 API文档——看见包和类(有相应的解释说明)
          2.Java的源码:jdk——lib——java.base——java.util(通过类名找相对应的源代码)
 */
class Person extends Object/*默认所有的类都是继承这个根类的*/{
    private int age;
    Person(int age){
        this.age=age;
    }
    //比较两个人是否为同龄人——使用Object 中的比较方法equals()
    public boolean equals(Object obj){   //多态
        /*
        当直接使用:this.age==P.age;时——在父类中并没有age 这个变量——此要使用向下转化——要进行判断
         */
        if(this==obj)
            return true;//当比较的是同一个变量时不再进行类型的转化和判断
         if(obj instanceof Person){
            Person P=(Person)obj;
            return this.age==P.age;
        }
        else {
                throw new ClassCastException("类型错误!!");
                /*
                当传入的的类型不为Person 时单纯的定义为不一样不太合理,则定义为抛出异常
                 */
        }

    }
    //自定义输出
    public String toString(){
        //return " "+this.age;
        return "person's age is "+this.age;
    }
}
public class exerObject {
    public static void main(String[] args){
        Person P1=new Person(12);
        Person P2=new Person(14);
        System.out.println(P1.equals(P2));
        //输出
        System.out.println(P1);//输出:Exercises.Person@282ba1e
      //System.out.println(P1.toString());//输出:Exercises.Person@282ba1e
        /*
        在Java中println() 方法中就自动调用了toString()方法
        toString():将对象转化为(类名@哈希值)字符串输出——按规定格式输出
         */
        System.out.println(P1.toString());
    }
}


/*
******总结:在父类中有比较和格式输出两个能,子类自然具有这两个功能,当使用时一般要重写,当用得到子类数据是要对多态向下转化和类型判断
 */

Java的源码查看:jdk-lib--java.base--java.util--(通过类名找源码)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值