淺談java中null是什么,以及使用中要注意的事項(xiàng)
1.null既不是對(duì)象也不是一種類型,它僅是一種特殊的值,你可以將其賦予任何引用類型,你也可以將null轉(zhuǎn)化成任何類型,例如:
Integer i=null;
Float f=null;
String s=null;
但是不能把null賦值給基本類型,如int ,float,double等
int k=null ----------編譯器會(huì)報(bào)錯(cuò)cannot convert from null to int
2.null是關(guān)鍵字,像public、static、final。它是大小寫敏感的,你不能將null寫成Null或NULL,否則編譯器會(huì)報(bào)錯(cuò)
3.包含null值的包裝類在Java拆箱生成基本數(shù)據(jù)類型時(shí)候都會(huì)拋出一個(gè)空指針異常
例如:
Integer i=null;
int k=i;---------------------------拋出java.lang.NullPointerException
4.在遍歷集合或者數(shù)組的時(shí)候需要添加null判斷,不然當(dāng)集合或者數(shù)組中包含null時(shí),會(huì)拋出異常
5.在使用equals判斷字符串是否相等時(shí),要將常量字符串放在equals的左邊,防止空指針異常
例如:
String[] arr1={"abc","123",null,"sky"};
for (String s1 : arr1) {
boolean flag=s1.equals("sky");
}
------------當(dāng)取值到是=null時(shí),會(huì)拋出空指針異常,把s1.equals("sky")改為“sky”.equals(s1),就可以避免拋出異常
6.空字符串與null區(qū)別
類型
null表示的是一個(gè)對(duì)象的值,而并不是一個(gè)字符串。例如聲明一個(gè)對(duì)象的引用,String a = null ;
""表示的是一個(gè)空字符串,也就是說它的長度為0。例如聲明一個(gè)字符串String str = "" ;
內(nèi)存分配
String str = null ; 表示聲明一個(gè)字符串對(duì)象的引用,但指向?yàn)閚ull,也就是說還沒有指向任何的內(nèi)存空間;
String str = ""; 表示聲明一個(gè)字符串類型的引用,其值為""空字符串,這個(gè)str引用指向的是空字符串的內(nèi)存空間;
在java中變量和引用變量是存在棧中(stack),而對(duì)象(new產(chǎn)生的)都是存放在堆中(heap):
以上這篇淺談java中null是什么,以及使用中要注意的事項(xiàng)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Java判斷對(duì)象是否為空(包括null ,"")的方法
- java 避免出現(xiàn)NullPointerException(空指針)的方法總結(jié)
- Java中關(guān)于Null的9個(gè)解釋(Java Null詳解)
- java String 類的一些理解 關(guān)于==、equals、null
- Java中String判斷值為null或空及地址是否相等的問題
- Java String轉(zhuǎn)換時(shí)為null的解決方法
- Java中對(duì)null進(jìn)行強(qiáng)制類型轉(zhuǎn)換的方法
- 深入理解java中的null“類型”
- 詳解Java去除json數(shù)據(jù)中的null空值問題
- java 獲取對(duì)象中為null的字段實(shí)例代碼
- Java代碼中如何去掉煩人的“!=null”
相關(guān)文章
實(shí)戰(zhàn)干貨之基于SpringBoot的RabbitMQ多種模式隊(duì)列
RabbitMQ 是一個(gè)由Erlang語言開發(fā)的AMQP的開源實(shí)現(xiàn),支持多種客戶端。用于在分布式系統(tǒng)中存儲(chǔ)轉(zhuǎn)發(fā)消息,在易用性、擴(kuò)展性、高可用性等方面表現(xiàn)不俗,下文將帶你深入了解 RabbitMQ 多種模式隊(duì)列2021-09-09Spring?Boot?中的?Native?SQL基本概念及使用方法
在本文中,我們介紹了 Spring Boot 中的 Native SQL,以及如何使用 JdbcTemplate 和 NamedParameterJdbcTemplate 來執(zhí)行自定義的 SQL 查詢或更新語句,需要的朋友跟隨小編一起看看吧2023-07-07Java String方法獲取字符出現(xiàn)次數(shù)及字符最大相同部分示例
這篇文章主要介紹了Java String方法獲取字符出現(xiàn)次數(shù)及字符最大相同部分,涉及java字符串的遍歷、比較、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09Java 9中如何對(duì)IntegerCache進(jìn)行修改詳解
這篇文章主要給大家介紹了關(guān)于Java 9中如何對(duì)IntegerCache進(jìn)行修改的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或使用java9具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起看看吧。2017-12-12Java中對(duì)null進(jìn)行強(qiáng)制類型轉(zhuǎn)換的方法
小編對(duì)null進(jìn)行強(qiáng)轉(zhuǎn)會(huì)不會(huì)拋錯(cuò),非常的好奇,下面小編通過實(shí)例代碼給大家介紹Java中對(duì)null進(jìn)行強(qiáng)制類型轉(zhuǎn)換的方法,感興趣的朋友參考下吧2018-09-09關(guān)于各種排列組合java算法實(shí)現(xiàn)方法
這篇文章介紹了幾種用JAVA實(shí)現(xiàn)的排列組合算法,有需要的朋友可以參考一下2013-06-06Java面試題沖刺第二十八天--數(shù)據(jù)庫(5)
這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于數(shù)據(jù)庫的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下2021-09-09IntelliJ IDEA Run時(shí)報(bào)“無效的源發(fā)行版:16“錯(cuò)誤問題及解決方法
這篇文章主要介紹了IntelliJ IDEA Run時(shí)報(bào)“無效的源發(fā)行版:16“錯(cuò)誤問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05