1.問題:
Long.valueOf("" + requestContext.globalData("count"));
為什麼前面要加“”。 2.回答:
因為,“”是String類型的,String加上一個對象,就會自動給轉成了String類型,我們在debug的時候,如果要列印對象,就要慎寫:
Object a=new Object();...//省略了給a設定各個成員變數的值;console.log("Object:"+a)
因為如果a是一個對象,你前面給它加一個String類型的對象,在debug的時候,首先給你變成String類型,這個時候,一定要看自己的需求;
問題中的代碼也可以這樣寫:
Long.valueOf((String)requestContext.globalData(“count”))
但是這樣還是不好,因為強轉類型很可能會失敗,這也是我們前面沒有用(Long)來強轉的原因,再進一步修改為
Long.valueOf(String.valueOf(requestContext.globalData("count")));
但是這樣寫太複雜了;問題中的寫法還是好一些的。這裡如果Long有一個類似於“”的方法,我們也就可以用同樣的方法來轉換了,但是,我目前還不知道(不是反話,是目前真的還沒有接觸到);接下來的問題就是,“”和null的區別是什麼。 3.null和“”的區別;
為什麼剛才是“”和null的區別,現在標題改成了null和“”的區別,其原因後面說,賣個關子;
區別如下:
①null是空,一無所有,我沒有一套房子;“”是我有一套房子,但是房子是空的;這是質的區別,區別非常大;
②String s1=null未分配地址,String s2=“”分配了地址;
③null用等號比較,“”用equals比較,而且先判斷是不是null,再判斷是不是“”,即先判斷有沒有,再判斷是不是空;這裡,我感覺,null不能直接翻譯成“空”,而應該翻譯成“無”,因為“”的中文名叫“Null 字元串”,這樣起名會產生歧義,讓初學者誤解,甚至讓好多老手翻車;if(null==s1||(“”).equals.(s2)),否則會報null 指標異常的錯誤;這裡null要寫==的前面,s1要寫==的後面,這個是規範,也是避免報錯的技巧;