java双等号和equals_Java中比较两个字符串==和.equals()区别

1、双等号(==)

==是比较引用是否相等,判断他们是否是同一个对象。

2、.equals()

equal()判断他们是否是值相等,逻辑上的相等。

Objects.equals() 方法调用之前必须要判断对象是否是null(JDK7)。

String.contentEquals(CharSequence cs) 比较String与CharSequence是否等(Java 1.5)

3、String str="abc" 和String str = new String("abc")创建字符串区别

String str="abc"创建字符串,如果String常量池中有个字符串,则str就指向"abc"内存象地址,多次声明"abc",内存中只会有一个"abc"。

String str = new String("abc")创建字符串,不管String常量池中是否有个字符串,都会重新分配,然后str指向它。内存中可能会有两个不同内存地址的"abc"。

4、字符串比较

如果只是比较两个字符的值,应该用Objects.equals(),而==只能用判断临时字符串是否等。下面看下示例代码,//比较两个值一样的字符串

new String("test").equals("test") // --> true

//比较字符串值一样,但不同的对象

new String("test") == "test" // --> false

//比较字符串值一样,但不同的对象

new String("test") == new String("test") // --> false

//临时字符串,他们是相同的对象,编译器会临时中间字符串有优化,相同值只会在String池中存一份。

"test" == "test" // --> true

"test" == "te" + "st" // --> true

//最好这样调用,如果字符串对象是null,也不会报错。

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、付费专栏及课程。

余额充值