str1==str2和str1.equals(str2)的问题

本文详细解释了Java中字符串比较的方法,特别是使用equals方法与==运算符的区别。通过具体示例说明了两者在处理字符串时的不同行为,特别是涉及到字符串常量池的情况。

问题:

@Test
public void stringTest(){
    String str1 = "hello";
    String str2 = "hello";
    System.out.println("str1.equals(str2) : "+ str1.equals(str2));
    System.out.println("str1 == str2 : "+ (str1== str2));
}
//console

str1.equals(str2) : true
str1 == str2 : true

equals比较的是两个数的数值,而==比较的是地址的引用,但这里为什么str1==str2返回是true,主要是由于和java中的常量池有关;在给str1赋值的时候,将hello的一起放入了常量池中,当再次将hello赋值str2的时候,先从常量池中查看是否存在hello的值,如果有,则直接取出,所以str1str2指的是同一个引用,因此返回的结果自然是true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值