IDEA-Object类的toString方法、equals方法

java.lang.Object类
类 Object 是类层次结构的(根类)祖宗类,每个类都是用Objcet作为(超类)父类,
所有的对象(包括数组)都实现这个类的方法。

直接打印一个类的对象名会出现地址值,使用toString重写才能打印得出数值。

public class Person {
    private String name;
    private int age;

    public Person() {
    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /*
    直接打印对象的地址值没有意义,我们需要重写Object类的tostring方法
    打印对象的属性(name.age)
     */
//    @Override
//    public String toString() {
//        //return "abc";//这样tostring方法打印的就是返回的值
//        //重写了tostring方法
//        return "Person{name = "+ name +",age = "+ age + "}";
//    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", 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;
    }
}
package demo01;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

/*
java.lang.Object类
类 Object 是类层次结构的(根类)祖宗类,每个类都是用Objcet作为(超类)父类,
所有的对象(包括数组)都实现这个类的方法。
 */
public class Demo01ToString {
    public static void main(String[] args) {
        /*
        Person默认继承了Object类,所以可以使用Object类中的tostring方法
        String toString() 返回该对象的字符串表示。
         */
        //创建Person类的对象
        Person p = new Person("张三",18);
        String s = p.toString();
        System.out.println(s);//demo01.Person@75412c2f

        //直接打印对象的名字,其实就是调用对象的toString方法
        System.out.println(p);//demo01.Person@75412c2f
        /*
        看一个类是否重写了tostring方法,直接打印这个类对应对象的名字即可
        如果没有重写tostring方法,那么打印的就是对象的地址值
        如果重写tostring方法,那么就按照重写的方式打印
         */
        System.out.println("============");
        Random r = new Random();//没有使用tostring
        System.out.println(r);//java.util.Random@36d64342
        System.out.println("============");
        Scanner sc = new Scanner(System.in);
        System.out.println(sc);//没有使用tostring
        System.out.println("============");
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        System.out.println(list);//使用了tostring方法重写
    }
}

equals方法是比较两个对象的地址值是否相等,需要注意的是比较的时候,对象不能进行tostring方法重写

public class Demo02Equals {
    public static void main(String[] args) {
        /*
    Person默认继承了Object类,所以可以使用Object类的equals方法
    boolean equals(Object obj)指示其他某个对象是否与地对象“相等”。

    Object类equals方法的源码:
        public boolean equals(Object obj) {
            return (this == obj);
        }
        参数:
            Object obj:可以传递任意的对象
        方法体:
            ==:比较运算符,返回的就是一个布尔值,true、false
            基本数据类型:比较的是值
            引用数据类型:比较的是两个对象的地址值
         this是谁?哪个对象调用的方法,方法中的this就是那个对象,
            p1调用的是equals方法,所以this就是p1.
         Obj是谁?
         传递过来的参数p2
         this == obj --> p1==p2
     */
        Person p1 = new Person("迪丽热巴",18);
        Person p2 = new Person("古力娜扎",18);
        //因为是两个new对象,所以地址值不同
        boolean b = p1.equals(p2);
        System.out.println("p1" + p1);//p1demo01.Person@49e4cb85
        System.out.println("p2" + p2);//p2demo01.Person@2133c8f8
        System.out.println(b);//false
        //如果将p1=p2 那么地址值也会相等
        p1 = p2;
        System.out.println("p1" + p1);//p1demo01.Person@49e4cb85
        System.out.println("p2" + p2);//p1demo01.Person@49e4cb85
        boolean a = p1.equals(p2);
        System.out.println(a);//true



    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值