==和equals 如何比较java中的字符串

是否有这样的经历,在程序中使用 == 运算符比较所有字符串。
但是,直到遇到了一个bug,将其中一个改为.equals(),它修复了这个bug。
是 ==不起效果了?什么时候应该使用,不应该使用?有什么区别吗
== 比较引用地址的相等(比较他们是否同一个地址)
.equals() 是对值的比较()
// 这有两个相同的值
new String("test").equals("test") // --> true 

// 但是他们不是相同的对象
new String("test") == "test" // --> false 

// 新创建的对象也不相等
new String("test") == new String("test") // --> false 

//由编译器内部调用,因此引用了同一个对象
"test" == "test" // --> true 

// 编译器将字符串文字连在一起,并对结果进行内部处理 比较后也是相等。
"test" == "te" + "st" // --> true

// ... 但是如果用对象的equals()   Objects.equals() 他们的值就会相等
Objects.equals("test", new String("test")) // --> true
Objects.equals(null, "test") // --> false
Objects.equals(null, null) // --> true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值