Java中String類的isEmpty方法、null以及""的區別
從別人部落格上看到的是這樣的:
isEmpty()
分配了記憶體空間,值為空,是絕對的空,是一種有值(值 = 空)
""
分配了記憶體空間,值為空字串,是相對的空,是一種有值(值 = 空字串)
null
是未分配記憶體空間,無值,是一種無值(值不存在)
然而我還是挺暈忽 所以寫了個demo驗證下~
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); String a = new String(); String b = ""; String c = null; testString(a); testString(b); testString(c); } private void testString(String str){ if (str == null){ Log.e("testNull", "null"); } if (str.isEmpty()){ Log.e("testNull", "isEmpty"); } if (str.equals("")){ Log.e("testNull", "引號"); } Log.e("testNull", "----------------"); }
由於只會玩Android,就寫了個Android的demo。效果一樣啦~
打log結果為:
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: isEmpty
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: 引號
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: ----------------
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: isEmpty
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: 引號
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: ----------------
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: null
再然後str就報空指標錯誤了~這裡可以發現好像isEmpty和""的效果是一樣滴啊。
又看了下isEmpty的原始碼:
public boolean isEmpty() { return count == 0; }就是說只要String的文字數量為0就返回true,而""裡面文字數量就是為0。
綜上所述:
null是未分配記憶體空間的“空”~
isEmpty和引號這兩個“空”與null相對(即它們 != null),且都是已分配記憶體(好像差不多一個意思)
(PS:尚不清楚isEmpty和""是否有何不同之處,有知道的小夥伴希望可以評論告知,謝謝~)
相關推薦
java中String類常用方法、屬性等
col clas equal ack length ++ ava eal rgs package Head18; public class java09 { public static void main(String[] args) { St
Java中String類的isEmpty方法、null以及""的區別
一直以來對String的這三個空挺暈的,剛好同事問我,我也學習下。從別人部落格上看到的是這樣的: isEmpty() 分配了記憶體空間,值為空,是絕對的空,是一種有值(值 =
Java中String類常用方法(轉)
轉自:https://blog.csdn.net/kaishizhangcheng/article/details/52332543int indexOf(String str)該方法用於返回當給定字串在當前字串中的位置,若當前字串不包含給定字串則返回-1。過載的方法int
java中String類常用方法I(判斷 Java 檔名是否正確,判斷郵箱格式是否正確)
內容摘自慕課網 具體程式碼: public class HelloWorld { public static void main(String[] args) { // Java檔名 String fileName
Java中Class類詳解、用法以及泛化
在前面我們將類的載入的時候,類載入一共有5步,載入,驗證,準備,解析和初始化。其中載入階段,除了將位元組碼載入到方法區,還生成了這個了的Java.lang.Class物件。那麼這個Class物件到底有什麼用呢? 前面的關於反射的文章,我們多次都用到了Class類,可以用這個
java面向對象學習之——java中的類修飾符、成員變量修飾符、方法修飾符
16px 實例化 同時 pan 相同 nbsp 激活 fin ati 類修飾符: public(訪問控制符)——>將一個類聲明為公共類,他可以被任何對象訪問,一個程序的主類必須是公共類。abstract——>將一個類聲明為抽象類,沒有實現的方法,需要子類提供方法
Java中的類變量、實例變量、類方法、實例方法的區別
方法 入口地址 內存 show 實例方法 static oid 共享 程序 類變量:形如static int a; 顧名思義,類變量可以理解為類的變量,類變量在類加載的時候就已經給它分配了內存空間,不同於實例變量(int a; ),實例變量是在該類創建對象的時候分配內存的。
Java中String類中常見方法以及類與類之間的轉換
String類中的方法描述 public String() 空引數構造方法 public String(byte[] bytes) 把位元組陣列轉換成字串物件 public String(byte[] bytes,int index,int length) 把位元組陣
java中String類、StringBuffer類、StringBuilder類的區別(未完待續)
);} public CharSequence subSequence(int beginIndex, int endIndex) { return this.substring(beginIndex, endIndex); } /** * 字串拼接
JAVA中String類的split方法的易錯點
最近在專案中遇到了一個問題,就是解析字串成陣列進行比對的,比如: { "imageDetail": "123&234&&", "imageType": "O&A&B&C"
java中String類的hashCode方法實現
public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value;
Java中 String類、StringBuilder類、StringBuffer類 區別與如何選擇
1. 概述: 1.1 String 字串常量,但是它具有不可變性,就是一旦建立,對它進行的任何修改操作都會建立一個新的字串物件。 1.2 StringBuffer
對Java中String類的忽略大小寫比較器(CaseInsensitiveComparator)的compare方法的一點疑問
最近我在看jdk原始碼,無意中看到String類的忽略大小寫比較器的原始碼,其原始碼如下。 private static class CaseInsensitiveComparator implements Comparator<Str
幾個java中String類中最常用的方法
常見的String方法 String和char陣列的裝換,char c[]=str.toCharArray(); String str = new String(c); 取出String字串物件中的某個字元:str.charAt(3); String和byte陣列的轉換:byte b[] =
Java中String類的構造方法
String類有以下幾種用得到的構造方法: 1. 空構造 空構造生成一個空的字串:函式宣告:public String (); 使用: String s1 = new String(); 構造了一個空的字串s1 2.把位元組陣列轉換成字串 函式原型: public Str
Java中String類的一些方法的返回值的結果
</pre><pre name="code" class="java">public class smp42 { public static void main(String args[]) { String str1 = "I am a
java中String類型轉換為yyyy-MM-dd的Date類型
col code edate birt mat led div get sys String birthday ="2017-02-22"; SimpleDateFormat sdf = new SimpleDateFormat(("yyyy-MM-dd")); jav
在java中String類為什麽要設計成final?
tro cli lai 這一 引用 沒有 num 重新 static 大神鏈接:在java中String類為什麽要設計成final? - 程序員 - 知乎 我進行了重新排版,並且更換了其中的一個例子,讓我們更好理解。 String很多實用的特性,比如說“不可變性”,是工
java中String的常用方法
大寫 緩沖 let 常用方法 類型 http 全部 new 出現 轉自http://www.cnblogs.com/crazyac/articles/2012791.html java中String的常用方法1、length() 字符串的長度 例:char chars[]
Java中的類繼承機制、接口
string類型 賦值 In void ati ble public 3.1 eache 1)聲明一個Person類,有name(String類型)、age(int類型)、sex(char類型)屬性,通過構造方法進行賦值。一個show方法,返回String類型,內容如下: