Java中关于equals与==在判断null时的差异

先看代码

import java.awt.*;
import java.util.Objects;

/**This program demonstrates abstract classes
 */
public class PerTest
{
    public static void main(String[] args)
    {
        Point pnull=new Point();
        Point pnull2=new Point();
        Point newnull=new Point();
        newnull=null;//赋值

        System.out.println("test1:\npnull equals null:");
        System.out.println("pnull == null?"+(pnull==null));
        System.out.println("pnull.equals(null)?"+pnull.equals(null));
        System.out.println("Objects.equals(pnull,null)?"+ Objects.equals(pnull,null));

        System.out.println("\ntest2:\npnull equals pnull2:");
        System.out.println("pnull == pnull2?"+(pnull==pnull2));
        System.out.println("pnull.equals(pnull2)?"+pnull.equals(pnull2));
        System.out.println("Objects.equals(pnull,pnull2)?"+ Objects.equals(pnull,pnull2));

        System.out.println("\ntest3:\npnull and pnull2 equals newnull:");
        System.out.println("pnull == newnull?"+(pnull==newnull));
        System.out.println("pnull2 == newnull?"+(pnull2==newnull));
        System.out.println("pnull.equals(newnull)?"+pnull.equals(newnull));
        System.out.println("pnull2.equals(newnull)?"+pnull2.equals(newnull));
        System.out.println("Objects.equals(newnull,null)?"+ Objects.equals(newnull,null));

        pnull=null;
        pnull2=null;
        System.out.println("test4:\npnull equals null after they both been assigned to null:");
        System.out.println("pnull == null?"+(pnull==null));
        System.out.println("pnull == pnull2?"+(pnull==pnull2));
        //System.out.println("pnull.equals(null)?"+pnull.equals(null)); //报错,出现异常,没搞懂为什么
        System.out.println("Objects.equals(pnull,null)?"+ Objects.equals(pnull,null));
    }
}

输出结果为:

test1:
pnull equals null: pnull == null?false
pnull.equals(null)?false
Objects.equals(pnull,null)?false

test2:
pnull equals pnull2: pnull == pnull2?false
pnull.equals(pnull2)?true
Objects.equals(pnull,pnull2)?true

test3:
pnull and pnull2 equals newnull:
pnull == newnull?false
pnull2 == newnull?false
pnull.equals(newnull)?false
pnull2.equals(newnull)?false
Objects.equals(newnull,null)?true
test4:
pnull equals null after they both been assigned to null:
pnull == null?true
pnull == pnull2?true
Objects.equals(pnull,null)?true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值