導航:首頁 > 編程語言 > java字元串null

java字元串null

發布時間:2022-09-07 00:28:53

java中String的null問題

這個有什麼不好理解的
s + " " + s == null 這個優先順序你沒搞清楚。比較運算符優先順序低,比較運算符左邊的結果是"null null"字元串右邊是null。當然不相等了
我猜你可能想要的是System.out.println(s + " " + (s == null));這樣的。結果是null true

② java中,字元串String類型的""和null值的區別,謝謝!

String str1 = null; str引用為空

String str2 = ""; str引用一個空串

也就是null沒有分配空間,""分配了空間,因此str1還不是一個實例化的對象,而str2已經實例化。

注意因為null不是對象,""是對象。所以比較的時候必須是 if(str1==null){...}和if(str2.equals("")){...}。

對象用equals比較,null用等號比較。因此,如果str1=null;下面的寫法錯誤:
if(str1.equals("")||str1==null){//如果str1沒有值,則....
//。。。。
}
正確的寫法是 if(str1==null||str1.equals("")){ //先判斷是不是對象,如果是,再判斷是不是空字元串
//...
}
打個比方:一個空玻璃杯,你不能說它裡面什麼都沒有,因為裡面有空氣,當然也可以把它弄成真空,null與" "的區別就象真空與空氣一樣。

③ java字元串錄入數組後顯示null

原因在於你最後for循環輸出中i<length里的length取值有問題。你這段程序中,length取的是文件的大小,long length = file.length()返回的是當前文件的所有字元的數量。假如你的文件里的內容是:

第一行:a

第二行:bc

那麼此時file.length()是多少呢?其實它是'a'、' '、'b'、'c'、' '五個字元組成,所以此時length=5,然而你讀取文件的時候,你用的是readline(),所以會讀到兩行數據,而你的預期結果也應該是arr數組中有兩個字元串。

所有數據讀取完後,又由於你arr數組的長度取的是leagth也就是5,此時arr數組的arr[0]="a",arr[1]="bc",arr[2]=null,arr[3]=null,arr[4]=null。所以你最後循環輸出arr數組時,後面幾個值就是null。

綜上,該問題的根本原因在於arr數組長度的定義有誤。因為你提前並不能知道文件有多少行,所以你無法確認arr數組到底該設置多少,你就想用file.length()來定義,但file.length()往往是遠大於文件行數的。

解決這個問題,可以利用java里的集合List,List在定義的時候不需要聲明其長度,最大長度應該是Integer的最大值,使用List的子類ArrayList可以確保順序無誤,將代碼修改為:

④ java 字元串為null 如何判斷

定義 String str;

判斷字元串是否空涉及兩個層次:

1、是首先判斷字元串變數的引用是否為空,即空對象的概念,用null來判斷,可以用if(str==null) 判斷 str是否為空;(注意不能用equals(null),在參數為null情況下,返回值永遠是false);

2、是在不為空對象的情況下,在判斷字元串對象是否為空串,即長度為0.用length()==0。 關鍵是搞清楚字元串對象為空和空字元串有區別。

拓展內容

Java空字元串與null的區別:

1、類型
null表示的是一個對象的值,而並不是一個字元串。例如聲明一個對象的引用,String a = null ;
""表示的是一個空字元串,也就是說它的長度為0。例如聲明一個字元串String str = "" ;

2、內存分配
String str = null ; 表示聲明一個字元串對象的引用,但指向為null,也就是說還沒有指向任何的內存空間;
String str = ""; 表示聲明一個字元串類型的引用,其值為""空字元串,這個str引用指向的是空字元串的內存空間;

在java中變數和引用變數是存在棧中(stack),而對象(new產生的)都是存放在堆中(heap)。

如下:

String str = new String("abc") ;

⑤ Java空字元串與null的區別和判斷字元串是否為空的方法

一、Java空字元串與null的區別:
1、類型
null表示的是一個對象的值,而並不是一個字元串。例如聲明一個對象的引用,String a = null ;
""表示的是一個空字元串,也就是說它的長度為0。例如聲明一個字元串String str = "" ;
2、內存分配
String str = null ; 表示聲明一個字元串對象的引用,但指向為null,也就是說還沒有指向任何的內存空間;
String str = ""; 表示聲明一個字元串類型的引用,其值為""空字元串,這個str引用指向的是空字元串的內存空間;
在java中變數和引用變數是存在棧中(stack),而對象(new產生的)都是存放在堆中(heap):
就如下:
String str = new String("abc") ;
ps:=左邊的是存放在棧中(stack),=右邊是存放在堆中(heap)。
二、判斷字元串是否為空的方法
String str = null;
if(str.equals("") || str= == null){//會拋出異常
System.out.println("成功");
}

⑥ java判斷字元串是否為空

字元串為空有兩種情況:1、""2、null
Stringstring="";

//方法一為""返回true負責返回false此處返回true
System.out.println(string.isEmpty());

//方法二為""返回true負責返回false此處返回true
System.out.println(string.equals(""));

//方法三為null返回true負責返回false此處返回false
System.out.println(string==null);

⑦ java 字元串初始化=「」和=null的區別

null和""的區別
問題一:
null和""的區別
Strings=null;
string.trim()就會拋出為空的exception
Strings="";
string.trim()就不會拋,為什麼?
答:
NULL代表聲明了一個空對象,根本就不是一個字元串。
""代表聲明了一個對象實例,這個對象實例的值是一個長度為0的空字元串。


NULL代表聲明了一個空對象,對空對象做任何操作都不行的,除了=和==
""是一個字元串了,只是這個字元串裡面沒有內容了


Strings=null;只是定義了一個句柄,也就是說你有了個引用,但是這個引用未指向任何內存空間
Strings="";這個引用已經指向了一塊是空字元串的內存空間,是一個實際的東東了,所以你可以對它操作,而不用擔心什麼了


你說數字0和沒有是不是一種概念啊??道理一樣的


而且,null可以賦值給任何對象.""就不行了.


這里""和NULL絕對是兩個概念
""代表一個字元串存在,它的值就是「」
NULL代表字元串根本沒有實際的值,你並不知道它是什麼。。。


哦,我明白了,意思就是Stringstring=null跟Stringstring;是一回事兒


null是空對象""是空字元串
Strings=null;//null是未分配堆內存空間
Stringa;//分配了一個內存空間,沒存入任何對象
Stringa="";//分配了一個內存空間,存了一個字元串對象

⑧ Java中的字元串被賦值null和""有區別么

兩者是有區別的:
堆棧中:假設聲明String
s1

null;String
s2

「」;
其實上棧中會有存放s1,但是堆中沒有產生數據;但是對於第二條語句,不僅棧中有s2,堆中也會有「」(空字元串,假如以前存在的話,s2會直接指向,假如沒有,就會新建一個);
方法引用:s1為null,不能調用String的任何方法,否則會報NullPointerException異常;而「」則可以調用String的任何方法,如字元串的拼接或者是求長度等。

⑨ java 空字元串與null區別

做成員變數(欄位/屬性/類變數)時,如果只寫String str;那麼是默認賦值為null的。

做局部變數(方法里的變數)時,如果只寫String str;是不會默認賦值null的,這里僅聲明了一個str變數,在棧內存中有定義,但沒有任何值,null其實也是一種值。此時任何調用str的操作,編譯時就均會報錯,是error,不是異常。null的話,你屏幕輸出(toString方法)的結果為字元串null,但其它調用str的操作,編譯可通過,運行時會空指針異常,此時是異常。

String str = ""; // 這個跟"abc"、"中國",本質上這都一樣,只是空串,長度為0罷了
""是空字元串,但是也是字元串,沒有什麼東西。
而null是空的意思,什麼都沒有,沒有地址。

⑩ java中做字元串非空判斷,為什麼要同時判斷字元串不為null和不等於空串

對於null而言。如果一個字元串為null,例如String a = null; 那麼此時,調用字元串對象a的方法,例如a.length(); 就會報空指針異常,即NullPointerException。如果這個異常沒有被catch住的話,a.length();後面的代碼就都不會被執行了。同時,如果這個程序是伺服器程序,那麼還會出現500這種屬於比較嚴重的問題。所以,在使用字元串對象前要先判斷一下其不為null。
不等於空串這個就是根據具體業務而定了,空串也就是字元串長度為0。那麼這種字元串在很多時候是沒什麼意義的。如果一個字元串是空串,那麼就可以不執行後面的業務邏輯了(視具體業務而定)。所以這種情況也需要判斷。

閱讀全文

與java字元串null相關的資料

熱點內容
c51單片機特殊寄存器的原理 瀏覽:576
閃耀永恆特利加密鑰 瀏覽:758
如何誇程序員 瀏覽:776
天津期貨python招聘 瀏覽:263
單片機機器語言寫的程序 瀏覽:548
韓國直播軟體app叫什麼名 瀏覽:916
軍營訓練不聽教官的命令 瀏覽:258
v開頭的音樂播放器是什麼APP 瀏覽:117
單片機是怎麼做出來的 瀏覽:315
博圖怎麼作為opc伺服器 瀏覽:100
編譯做題軟體 瀏覽:293
橋梁檢測pdf 瀏覽:685
化解壓力的一種方法 瀏覽:680
路由器和DSN伺服器有什麼區別 瀏覽:548
android伸縮控制項 瀏覽:851
androidm3u8緩存 瀏覽:236
imphp開源知乎 瀏覽:708
清除網路通配符dos命令 瀏覽:839
鴻蒙系統怎麼快速換回安卓 瀏覽:714
pdf綠色虛擬列印機 瀏覽:215