理解java中"=="的原理

问题

很多初学者对于java中的”==”不知道怎么时候使用,其实很简单,我们可以来分析一下原理!

原理分析

1、先记住一句话:“==比较的是2个对象的地址”

2、只要知道了这句话,那么就好理解了,首先,基本数据类型是直接保存在栈里面的,所以如果两个基本数据类型的值相同,则他们的栈的地址也相同。如果两个引用数据类型使用==比较,只要是两个分别new出来的对象,得到的结果就一定是false了。

public class HelloWorld
{
    public static void main(String[] args)
    {
        String hello = "123";
        String hello2 = "123";
        System.out.println("由于字符串特性,得到结果为true=====>" + (hello == hello2));

        String hello3 = new String("123");
        System.out.println("由于字符串特性,新创建了一个对象,得到的结果为false====>" + (hello == hello3));

        Integer test1 = 1;
        Integer test2 = 1;
        System.out.println("基本数据类型比较时,比较的是值,所以得到的是true====>" + (test1 == test2));

        Integer test3 = new Integer(1);
        System.out.println("引用类型比较时,比较的是值,所以得到的是false====>" + (test1 == test3));

        Person p1 = new Person();
        Person p2 = new Person();
        System.out.println("因为是两个引用类型,比较的是栈的值,所以得到的是false===>" + (p1 == p2));

        Person p3 = p2;
        System.out.println("虽然都是引用类型,但是都是一个地址,所以得到的True===>" + (p3 == p2));
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值