内置类型、引用类型的比较

一、文字描述

     1、内置类型用==比较

          == 左右两侧如果是内置类型的变量,直接用变量中的数值直接比较

      2、引用类型

          引用类型变量使用==进行比较,并不是比较引用对象中的内容,而是比较引用对象的地址

二、代码演示

public class Date {
    public int year;
    public int month;
    public int day;

    public Date(int year,int month,int day){
        super();//调用基类的构造方法
        this.year = year;
        this.month = month;
        this.day = day;
    }

    @Override
    public String toString() {
//        return super.toString();需要进行重写
        return "[" + year + "/" + month + "/" + day + "]";
    }

    @Override
    public boolean equals(Object obj) {

        if(obj == null){
            return false;
        }

        //this == obj 检测this和obj指向的是否是同一个对象,那既然指向的是同一个对象,内容肯定一样
        if(this == obj){
            return true;
        }
        if(!(obj instanceof Date)){
            return false;
        }

        Date d = (Date)obj;
        return (year == d.year) && (month == d.month) && (day == ((Date) obj).day);
    }

    public static void method1(){
        Date d = new Date(2022,9,13);
        System.out.println(d);
    }

    public static void method2(){
        int a = 10;
        int b = 20;
        int c = 10;
        //内置类型使用==进行比较
        System.out.println(a == b);
        System.out.println(a == c);

        System.out.println("==========================");
        //引用类型使用==进行比较
        Date d1 = new Date(2022,9,13);
        Date d2 = new Date(2022,9,13);
        Date d3 = new Date(2022,9,13);
        System.out.println(d1 == d2);
        System.out.println(d2 == d3);

        //如果想要比较对象中的内容,需要调用equals的方法来比较,注意,equals必须要进行重写
        System.out.println("==========================");
        System.out.println(d1.equals(d2));
        System.out.println(d2.equals(d3));
    }
    public static void main(String[] args) {
        method1();
        method2();
    }
}

运行结果为:

 

注:对equals方法进行重写

      1、先检测obj是否为空,如果为空,肯定不相等,直接返回false

      2、需要检测是否为自己和自己比较,自己和自己比较肯定是相等的,直接返回true

      3、两个不同的对象进行比较,此时需要检测obj是否为当前类的一个对象,如果不是,肯定不相等

      4、说明obj一定是当前类的对象,将obj转化为当前类的对象,然后将对象中的成员进行逐个比较 

 

 

 

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薰衣草2333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值