Java 字符串比较操作符 == 与 equals 的区别

Java 比较两个字符串是否相等有两个操作符, 双等于(==)与字符串对象的equals方法.

这两个比较操作符虽然都是比较两个字符串是否相等的,但是从根本上讲还是有细微差别的.


一、场景模拟


1.1 声明变量值均为"Hello"的三个变量.

    String str1 = "Hello";                
    String str2 = "Hello";                
    String str3 = new String("Hello");

1.2 内存分析

    str1与str2变量指向常量池中同一块内存区域,str3指向堆中的内存区域.

    


二、双等于(==)


2.1 使用==比较

    System.out.println(str1==str2);//true
    System.out.println(str1==str3);//false


2.2 结果分析

此时str1、str2、str3为引用类型变量,所以比较的是变量上的内存地址.


str1与str2指向的均为常量池中的同一块内存区域.因此str1 == str2结果为True.

str1与str3分别指向常量池中和堆中不通区域的内存地址.因为str1 == str3结果为False.


三、equals方法


3.1 使用equals方法比较

    System.out.println(str1.equals(str2));//true
    System.out.println(str1.equals(str3));//true


3.2 结果分析

equals比较引用类型变量所引用的对象的内容.


str1、str2与str3的内容均为"Hello",因此结果都为True.


四、总结


== 主要用于比较两端变量的值是否相等. equals方法比较对象的内容是否相等.

如果只是想比较变量值是否相等应该尽量采用equals方法.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值