日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

JAVA中equals空_Java中为什么查询空字符串跟判断是否为null的时候可以不用equals?...(亲测)

發(fā)布時(shí)間:2024/9/20 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA中equals空_Java中为什么查询空字符串跟判断是否为null的时候可以不用equals?...(亲测) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

if(id!=null&&id!=””)

代碼中經(jīng)常這樣寫(xiě),空字符串跟null 都不用equals嗎?

首先,你的

id!=""

這種寫(xiě)法是錯(cuò)誤的,要寫(xiě)成

!id.equals("")

其次,要明白

==

equals

的含義

==

表示兩個(gè)對(duì)象是同一個(gè)對(duì)象的引用,

==null

表示這個(gè)對(duì)象不是任何實(shí)例對(duì)象的引用,該對(duì)象為空。

equals

是String類(lèi)中的方法,表示兩個(gè)字符串的內(nèi)容相同。

一直都這么寫(xiě)的,同問(wèn),為啥呢?

空字符串其實(shí)是要用equals的,否則會(huì)出錯(cuò)。null是可以使用!=

下面的代碼,結(jié)果為false

String d = new String("");

System.out.println(""==d);

所以必須使用equals來(lái)判斷空字符串,如

public static boolean isEmpty(String str) {undefined

return (str == null || "".equals(str));

}

或者使用length來(lái)判斷并擴(kuò)展到任何CharSequence,如

public static boolean isEmpty(final CharSequence cs) {undefined

return cs == null || cs.length() == 0;

}

1.

equals()

方法存在于

Object

類(lèi)中,所有的包裝類(lèi)如

Integer

Long

等均對(duì)該函數(shù)進(jìn)行了重新實(shí)現(xiàn),假如你自己寫(xiě)了一個(gè)類(lèi)在類(lèi)中使用equals()方法,該方法的效果等同于”==”,會(huì)判斷兩個(gè)類(lèi)的對(duì)象引用是否相同,而在包裝類(lèi)中

equals

會(huì)判斷該對(duì)象的內(nèi)容是否相等。

2.如果該判斷寫(xiě)為

if(id.equals("")&&id!=null)

,會(huì)存在NullPoint的問(wèn)題,假如id的值為null,你去掉調(diào)用

equals()

方法將會(huì)拋出異常。

3.

解釋一下以上程序

str1 == str2

比較的是兩者的引用是否相同,我們聲明的字符串會(huì)被存放到字符串常量池中,

str1

時(shí)會(huì)將abc放入常量池,

str3

的時(shí)候會(huì)首先檢查常量池中是否有字符串

abc

有的話就會(huì)直接引用。str2因?yàn)槭侵苯觧ew了一個(gè)新的對(duì)象,所以地址肯定與str1的不同。那為什么使用了

intern

方法之后就相同了呢

當(dāng)調(diào)用

intern

方法時(shí),如果池已經(jīng)包含一個(gè)等于此 String 對(duì)象的字符串,則返回池中的字符串,此時(shí)并不會(huì)去生成新的字符串。因?yàn)檫€是引用了常量池中的字符串所以

str2.intern() == str1

返回值還是

true

以上,就是這些。(●’?’●)

id==null

時(shí),表示id這個(gè)引用沒(méi)有指向任何對(duì)象,只是一個(gè)引用;Java中具體的對(duì)象才可以調(diào)用方法(這里就是

equals()

)。所以當(dāng)

id==null

時(shí)調(diào)用

equals()

是會(huì)拋出

NullPointerException

這代碼寫(xiě)錯(cuò),沒(méi)用equals比較空串,而且對(duì)于空字符串有很多,比如tab,回車(chē)之類(lèi)的都沒(méi)有check,有n多現(xiàn)成的函數(shù)可以用,比如apache commons里面的StingUtils.isBlank方法,Guava的Strings.isNullOrEmpty方法都可以判斷null和空白字符串的情況。

還是需要明白 == 與 equals 的區(qū)別, “”與 null的區(qū)別 ,

== 是比較值是否相等 或 引用類(lèi)型的地址是否相等

equals 是比較引用類(lèi)型地址的值 即內(nèi)容是否相等
————————————————
版權(quán)聲明:本文為CSDN博主「淡然最好」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_28730353/article/details/114787650

總結(jié)

以上是生活随笔為你收集整理的JAVA中equals空_Java中为什么查询空字符串跟判断是否为null的时候可以不用equals?...(亲测)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。