Java中的==和equal

本文解析了Java中==操作符与equals方法的区别,详细解释了它们如何应用于字符串比较,并通过示例说明了字符串缓冲池的概念及其对内存地址的影响。

对于初学者,Java中的==和equal往往理解起来逻辑容易混乱。这里简单记录下理解二者的重点所在。

  • ==比较的是内存地址是否相同
  • equal需要分几点理解
    • object类中的equal: 也是用的==进行比较,所以也还是地址的比较
    • 其他类中的equal一般都有重写object中的equal方法,故视具体类而定。这里具体分析下String类中的equal方法(因为当时自己也理解混乱-.-)
      •   

        首先理解字符串缓冲池——可将相同字符串内容的引用指向同一内存中的内容

        •   eg1:String a="hello";String b = "hello"; //a,b引用的地址相同,因为虚拟机分配

        •       eg2:String a="hello";String b=new String("hello"); //b要求分配新内存,所以a,b引用地址不同
        •       eg3:String a="hello";String b=new String("hello");b=b.intern();//b调用java.lang.String中的方法,该方法搜索字符串缓冲池中是否有内容为“hello”的引用,如果有,返回该引用地址。所以这里a,b引用的地址相同
      •       String的equal方法
        •   字符串内容相同返回true,不同返回false。详情可查看api,例图如下:


 

对==和equal的理解就先写到这里,也给自己一个理解的机会啦~

转载于:https://www.cnblogs.com/alex-huang-blogs/p/4548653.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值