毛片在线视频观看,一级日韩免费大片,在线网站黄色,澳门在线高清一级毛片

薈聚奇文、博采眾長、見賢思齊
當前位置:公文素材庫 > 計劃總結(jié) > 工作總結(jié) > 第一次月考總結(jié)與反思

第一次月考總結(jié)與反思

網(wǎng)站:公文素材庫 | 時間:2019-05-26 20:35:42 | 移動端:第一次月考總結(jié)與反思

第一次月考總結(jié)與反思

擴展閱讀:java中 null和“”的區(qū)別詳解

null和""的區(qū)別問題一:

null和""的區(qū)別Strings=null;

string.trim()就會拋出為空的exceptionStrings="";

string.trim()就不會拋,為什么?答:

NULL代表聲明了一個空對象,根本就不是一個字符串。

""代表聲明了一個對象實例,這個對象實例的值是一個長度為0的空字符串。

NULL代表聲明了一個空對象,對空對象做任何操作都不行的,除了=和==""是一個字符串了,只是這個字符串里面沒有內(nèi)容了

Strings=null;只是定義了一個句柄,也就是說你有了個引用,但是這個引用未指鄉(xiāng)任何內(nèi)存空間

Strings="";這個引用已經(jīng)指向了一塊是空字符串的內(nèi)存空間,是一個實際的東東了,所以你可以對它操作,而不用擔心什么了

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

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

這里""和NULL絕對是兩個概念

""代表一個字符串存在,它的值就是“”

NULL代表字符串根本沒有實際的值,你并不知道它是什么。。。

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

null是空對象""是空字符串

Strings=null;//null是未分配堆內(nèi)存空間

Stringa;//分配了一個內(nèi)存空間,沒存入任何對象Stringa="";//分配了一個內(nèi)存空間,存了一個字符串對象

問題二:

Strings;和Strings=null;和Strings="a";有什么區(qū)別?

針對這三種情況,使用out.println(s);的時候,第一個會出現(xiàn)異常,第二個會輸出null.第三個則會輸出a.

這是為什么呢?這三句聲明語句,各自作了什么呢?答:

第一個只是定義了一個String類型變量s,并沒有給它賦初值,在Java中,默認在使用一個變量的時候必須賦予它初值(降低風險)。第二個和第三個都定義了String類型變量s,并賦予它初值,只不過第二個賦予的值為null(空)罷了

主要要理解的是Strings;s為一個引用~~它不是對象第一個是沒有初始化的引用;第二個為空引用;

第三個是在字符串池里寫入一個字符"a",然后用s指向它。另外,

Strings="a"和Strings=newString("a");是有本質(zhì)上的區(qū)別的前者是在字符串池里寫入一個字符"a",然后用s指向它;后者是在堆上創(chuàng)建一個內(nèi)容為"a"的字符串對象。

Stringstr="aaa";//于棧上分配內(nèi)存Stringstr=newString("aaa");//于堆上分配內(nèi)存

Strings;系統(tǒng)會自動賦值null

Strings;只是給s分配一個內(nèi)存空間

Strings=null;是分配的空間中存儲的值為空值

Strings="a";這句就不用我多說了分配的空間的值為字符a

問題三:

聲明了一個stringa;變量

在以后的判斷中,a==""和a==null有何不同?答:

如果沒有給a賦過值,a==""會導致異常。

在實際處理時,往往認為""和null代表相同的含義,即都代表無值。此時建議用如下語法:if(a==null||a==""){}

如果a為null,就不會執(zhí)行后面的判斷,直接返回true。

null是用來判斷引用類型是否分配了存儲空間""是針對字符串的;

string類型實際上是字符串指針,也即是一個引用類型所以如果沒有給a賦過值,a==""會導致異常

所以if(a==null||a==""){}這種寫法也是正確的

問題四:Stringabc=null;Stringabc="";Stringabc;三種寫法有什么區(qū)別?答:

1:創(chuàng)建一個空字符串對象,

2:創(chuàng)建一個字符串為空的字符串對象。

3:聲明一個字符串對象,但并沒有分配內(nèi)存,而1,2已經(jīng)分配了內(nèi)存

對于最后一種表示,你不能if(abc==null),或者intlength=abc.length();編譯的時候會提示可能沒有初始化.

Stringabc=null;Stringabc="";一般推薦使用第二種第一種abc指向null,很多時候要判斷字符串是否為空時,容易漏掉這種情況,在調(diào)用String的相關(guān)方法的時候就會出錯

第二種則相對簡單,String的方法都可以用,判斷的時候也不會出錯

1)Stringabc=null;2)Stringabc;3)Stringa="";4)Stringb="";

5)Stringc=newString("");6)Stringd=newString("");//1)等于2),和C語言不同,JAVA為安全原因不允許一個懸掛引用,沒有賦值的引用地址一律自動賦值為NULL,以防止訪問到任意內(nèi)存

//3)和4)中,變量a和b將會指向同一內(nèi)存地址(""的地址)

//5)和6)中,變量c和d不會指向同一地址,而是兩個""內(nèi)容的地址,并且和a,b不同,實際上,3)和4)相當于newString("").intern().

//String類維護著一個字符串池,對于像3)和4)這樣的賦值方法,String會在這個池中查找字符串是否已經(jīng)在池中,如果在,就直接指向該地址,

如果不在,生成一個實例放入池中再指向那個地址,可見對于同樣內(nèi)容的字符串多次引用時3)4)的方法要比5)6)的方法剩內(nèi)存,之所以這樣做,是

因為String是一個內(nèi)容不可變的量,運用的是設計模式GOF.FlyWeight

但有個關(guān)鍵的一點,沒有人說到,這就是:

Strings;在什么情況下可以等同于Strings=null;而在什么情況下又不等同?!考慮下面的代碼://StringTest.java

publicclassStringTest{staticStrings;//*

publicstaticvoidmain(String[]args){//Strings;//**System.out.println(s);}}

編譯并運行上面的代碼,將打印null。

可見標有*號的行是自動初始化了的(s被自動初始化為null)。

而如果把標有**號的行取消注釋,代碼將不能通過編譯,這是因為這行定義的是本地變量,而本地變量是不會自動初始化的。由此得出結(jié)論:

在成員變量的定義中,Strings;等同于Strings=null;

而在本地變量(方法變量)的定義中,Strings;不等同于Strings=null;,這時要使用s必須顯式地賦值。

這些雖然是小知識點,但在實際應用中很重要,也很容易被一些人忽視,特此提出。還有一點要說明的是:

只要是在方法在中定義變量都要顯示賦初值,main()方法也不例外,而在方法之外編譯器回自動賦初值。

友情提示:本文中關(guān)于《第一次月考總結(jié)與反思》給出的范例僅供您參考拓展思維使用,第一次月考總結(jié)與反思:該篇文章建議您自主創(chuàng)作。

來源:網(wǎng)絡整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。


第一次月考總結(jié)與反思》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://m.seogis.com/gongwen/442035.html