資源描述:
《java初學(xué)者容易混淆的幾個問題》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、www.027hpedu.comJava初學(xué)者容易混淆的幾個問題1.String類和StringBuffer類它們都是處理字符串的類,但是它們有一個最大的區(qū)別,那就是,String對象是存儲你不能改動的文本字符串,相反,如果你希望改動,則應(yīng)使用StringBuffer類作為替換.eg1:......//omitsomecodeStrings1="Youarehired!";System.out.println(s1.replace('h','f'));//用f把字串中的h替換了System.out.println(s1);......//omitsomecode運(yùn)行結(jié)
2、果:Youarefired!Youarehired!結(jié)果分析:從結(jié)果,明顯可知,s1的值并沒有被改變,而第一行結(jié)果只是屏幕內(nèi)容的替換.eg2:......//omitsomecodeStringBuffers2=newStringBuffer("HellofromJava!");s2.replace(6,10,"to");System.out.println(s2);......//omitsomecode運(yùn)行結(jié)果:HellotoJava!結(jié)果分析:顯然,s2的值已改變.2.位邏輯與條件邏輯首先聲明,為了與位邏輯更好區(qū)分開來,我把通常所說的邏輯取了個別名叫做條件邏輯.
3、它們都有各自的操作符,位邏輯操作符有:&(與運(yùn)算),^(異或運(yùn)算),
4、(或運(yùn)算);條件邏輯操作符有:&&(并且),
5、
6、(或者).位邏輯運(yùn)算通常是針對兩個數(shù)而言,實(shí)行位操作;而條件邏輯運(yùn)算是針對兩個條件表達(dá)式而言,實(shí)行條件操作.其實(shí),位邏輯操作符一樣可以實(shí)現(xiàn)條件操作,但是此時有一個重要的區(qū)別:用位操作符時,不管操作符兩邊的條件表達(dá)式成不成立,它都要通通進(jìn)行運(yùn)算判斷,而條件邏輯操作符不一樣了,如果通過左側(cè)的操作數(shù)就可以進(jìn)行它們需要的判斷,那么它就不會再計算右側(cè)的操作數(shù)了,這種情況叫短路.廢話少說!且看下例.eg1:......//omitsomecodedoubleval
7、ue=0;if(value!=0&&1/value<1000){System.out.println("Thevalueisnottoosmall.");}else{System.out.println("Thevalueistoosmall.");}......//omitsomecode運(yùn)行結(jié)果:Thevalueistoosmall.結(jié)果分析:照理說應(yīng)會出現(xiàn)除數(shù)為0的錯誤,但是我剛才說了,由于條件邏輯操作符是短路操作符,顯然,value!=0不成立,立即就可作出判斷應(yīng)執(zhí)行else后的語句,所以它就不再會運(yùn)算判斷1/value<1000了.如果不懂請再看一例:eg2
8、:......www.whhpit.comwww.027hpedu.com//omitsomecodedoubleint1=0,int2=1,int3=1;if(int1!=0&(int2=2)==1){}System.out.println("int2="+int2);if(int1!=0&&(int3=2)==1){}System.out.println("int3="+int3);......//omitsomecode運(yùn)行結(jié)果:int2=2.0int3=1.0結(jié)果分析:我想不用我分析了,你應(yīng)該懂了吧.3.實(shí)例變量與類變量可以通過兩種方法在類中存儲數(shù)據(jù)───作為
9、實(shí)例變量和類變量.實(shí)例變量是特定于對象的,如果你有兩個對象(即一個類的兩個實(shí)例),每一個對象中的實(shí)例變量獨(dú)立于另一個對象中的實(shí)例變量的;另一方面,兩個對象的類變量均指向相同的數(shù)據(jù),并因此面保存相同的值,換句話說,類變量被類中的所有對象共享.差點(diǎn)忘了,它們在形式上的區(qū)別,類變量在聲明時比實(shí)例變量多一個static.eg:classdata{publicintintdata=0;//顯然,intdata在這兒是實(shí)例變量}publicclassexam{publicstaticvoidmain(String[]args){dataa,b;a=newdata();b=newd
10、ata();a.intdata=1;System.out.println("b.indata="+b.intdata);}}運(yùn)行結(jié)果:b.intdata=0結(jié)果分析:可以看出,a.intdata的值雖然變了,但并沒有影響b.intdata.但是如果在data類中聲明intdata時,在其前面加上static就變成類變量了(即:publicstaticintintdata=0;),則此時運(yùn)行結(jié)果會變?yōu)?b.intdata=1這次a.intdata值的改變可把b.intdata影響了,事實(shí)上,對象a和b的類變量均指向相同的數(shù)據(jù),所有值一樣,這就是類變量的