Java中"" 與 null 的區別
String name;
String nickName = “”;
區別一
null :代表的是空物件。
解釋:它還沒有目標,不知道要指向誰?等同於 String name = null。除了可以操作判斷或賦值語句(== || = )外,不可以對其進行其他任何操作。例如 name.trim() 會丟擲空指標異常。
“” :代表已經聲明瞭一個物件的例項。
解釋:nickName 即已經是一個String型別物件的例項了,它裡面儲存了一個長度為0的空字串,已經有了一塊空字串的記憶體空間,可以對其進行字串的所有操作。比起name,它真是豐富多了。
應用:
String a ;
/**使用前會進行判斷,按照順序來判斷 a 是否被例項化,如果例項化後,則無需再進行判斷是否為""。再判斷是否*為空,
*如果沒有判斷 a == null 直接進行判斷 a == "" 有時會導致異常
*/
if(a == null || a == ""){
//對a進行使用
}
相關推薦
java中的equals與==的區別
這兩個東西初學java的時候就瞭解了,但那時只是大概的知道判斷數字相等就用==,String字串相等就用equals,後來也有去網上看了一下具體區別,但是,每隔一段時間理解就會變得模糊,所以在這裡記錄一下:1,對於==1)、作用於基本資料型別(也就是8大基本資料型別)變數:比
java 標準輸出與標準錯誤 out與 err 區別 用法 聯絡 java中的out與err區別 System.out和System.err的區別 System.out.println和System.err.println的區別 Java重定向S
/** * The "standard" output stream. This stream is already * open and ready to accept output data. Typically this stream * corresponds
Java中抽象類與介面區別
抽象類:抽象類是無法例項化的特殊類。所以問題是為什麼我們需要一個不能被例項化的類,抽象類只能是子類(繼承自)。換句話說,它只允許其他類繼承它,但不能例項化。優點是它為所有子類執行特定的層次結構。簡
淺談java中的"=="和eqals區別
short copy 覆寫 main 否則 變量 程序 bar gif 在初學Java時,可能會經常碰到下面的代碼: 1 String str1 = new String("hello"); 2 String str2 = new String("hello");
在java中public void與public static void區別
sta erro ati 對象 方法 這樣的 調用 必須 靜態方法 static 方法可以被main方法直接調用,而非static方法不可以。因為static方法是屬於類的,是類方法。可以通過類名.方法名直接調用。而非static方法必須等對象被new出來以後才能使用,因而
Java中重載與重寫的區別
ref 類對象 就是 不同 3.4 做出 同方 相同 默認 簡單的個人記憶,重寫是子類中的方法與父類的方法參數、返回值一模一樣,重載是對於同一個類中的方法,方法名相同,參數類型、個數不同。當父類的引用指向子類對象的時候,子類中如果有對於父類方法的重寫,則調用的是子類重寫過的
java中的"=="
Java中如果使用 == 雙等於比較物件,等於比較的是兩個物件的記憶體地址,也就是比較兩個物件是否是同一個物件 但是Integer型別, 對於-128-127之間的數是緩衝區取的,所以用等號比較是一致的。但對於不在這區間的數字是在堆中new出來的, 地址空間不一樣,也就不相等。所以,以後碰到
Java空字串與null區別
非本人 : 轉載於:http://www.cnblogs.com/candle806/archive/2013/01/17/2864917.html -------如有侵權 請聯絡我 我會進行刪除
java中類方法與物件方法區別
public class Test { /** * 下面這個方法就是靜態方法,應該就是樓主所說的類方法~~ * 靜態方法必須定義成static的,在類Test被例項化以前就已經存在於記憶體中 * 靜態方法使所有該類的例項也就是物件共有的方法 */ public static void f1() {
MY SQL中''與null的區別
平時我們在使用MySQL的時候,對於MySQL中的NULL值和空值區別不能很好的理解。注意到NULL值是未知的,且佔用空間,不走索引,DBA建議建表的時候最好設定欄位是NOT NULL 來避免這種低效率的事情的發生。 問題 1: 首先,我們需要搞清楚 “空值” 和”NULL”的概念:
java中靜態變數與非靜態變數的區別
靜態變數與非靜態變數的區別如下: 1.記憶體分配 靜態變數在應用程式初始化時,就存在於記憶體當中,直到它所在的類的程式執行結束時才消亡; 而非靜態變數需要被例項化後才會分配記憶體。 2.生存週期 靜態變數生存週期為應用程式的存在週期; 非靜態變數的存在週期取決於
Java 中的 ==, equals 與 hashCode 的區別與聯絡
一、概述 1、概念 == : 該操作符生成的是一個boolean結果,它計算的是運算元的值之間的關係 equals : Object 的 例項方法,比較兩個物件的content是否相同 hashCode : Object 的 native方法 , 獲取物件的雜湊值,用
java中的i++與++i有什麼區別?
剛開始接觸時,做了一些小測試,還以為這兩個沒有什麼區別。 public class OperatorDemo { public static void main(String[] args){ int a = 10; a++; System.o
【本人禿頂程式設計師】淺析JAVA中堆記憶體與棧記憶體的區別
←←←←←←←←←←←← 快!點關注!!! Java把記憶體劃分成兩種:一種是棧記憶體,一種是堆記憶體。 一、棧記憶體 存放基本型別的變數,物件的引用和方法呼叫,遵循先入後出的原則。 棧記憶體在函式中定義的“一些基本型別的變數和物件的引用變數”都在函式的棧記憶體中分配。當在一
java中氣泡排序與選擇排序的區別
初學java語言,排序演算法絕對是我們拿來實踐的好例子。而在排序中有兩種簡單的演算法是繞不開的,就是氣泡排序與選擇排序。下面來分別講解: 冒泡演算法:假設陣列長度為lenght,冒泡演算法的外迴圈為l
Java中,overload與override的區別
Java的overload(過載)與override(重寫,覆蓋)的區別 一,overload(過載) 1,overload(過載)表示同一個類中可以有多個名稱相同的方法,但是這些方法的引數列表各不相同(即不同的引數型別,不同的引數個數,不同的引數順序,)。
java中Map,List與Set的區別
Map 是一種把鍵物件和值物件對映的集合,它的每一個元素都包含一對鍵物件和值物件。 Map沒有繼承於Collection介面 從Map集合中檢索元素時,只要給出鍵物件,就會返回對應的值物件。 Map 的常用方法: 1 新增,刪除操作: [html] view plain copy
Java進階(二十一)java 空字串與null區別
java 空字串與null區別1、型別 null表示的是一個物件的值,而並不是一個字串。例如宣告一個物件的引用,String a = null ; ""表示的是一個空字串,也就是說它的長度為0。例如宣告一個字串String str = "" ;2、記憶體分
java中this關鍵字與super關鍵字的區別
區別點 this super 屬性訪問 訪問本類中的屬性,如果本類中沒有此屬性,則從父類中繼續查詢 訪問父類中的屬性 方法 訪問本類中的方法,如果本類中沒
java中的final與C++中的const的區別
(1)final在java中定義常量,可作用於基本型別或者類型別,若是作用於類型別,則此類型別不能作為父類被繼承,也就是說它的下面不能有子類,這樣的類叫做原子類。 C++中的const定義常量,(2)Java中的final如果是對於基本型別,那和C++ const是