SCJP考题中的陷阱---来自水木清华BBS
發(fā)信人:?ifyr?(元旦加措),?信區(qū):?Java????????
標(biāo)??題:?SCJP考題中的陷阱[from:chinajavaworld]?
發(fā)信站:?BBS?水木清華站?(Fri?May?24?08:23:55?2002)?
?
SCJP考題中的陷阱?原著?Ajith?Kallambella?[from:chinajavaworld]?
==========?
(1)?Two?public?classes?in?the?same?file.?(illegal)?
???同一個(gè)文件里有兩個(gè)public類。(非法)?-------------最基礎(chǔ)了
(2)?Main?method?calling?a?non-static?method.?(illegal)?
???在main(String[]?args)方法內(nèi)調(diào)用一個(gè)非靜態(tài)方法。(非法)?
(3)?Methods?with?the?same?name?as?the?constructor(s).?(這種題常有)?
???與Constructor(s)有相同名字的方法。?
(4)?Thread?initiation?with?classes?that?do?not?have?a?run()?method.?(常考之題?
)?
???初始化了一個(gè)沒有run()方法的線程類。?
(5)?Local?inner?classes?trying?to?access?non-final?vars.?(illegal)?
???內(nèi)部類嘗試訪問非final變量(非法)?
(6)?Case?statements?with?values?out?of?permissible?range.?(byte,int,?short,??
chat)?
???選擇語句case中,沒有使用允許的值。如(byte,int,short,char)等?
(7)?Math?class?being?an?option?for?immutable?classes?!!?(totally?wrong!)?
???Math類作為不可改變類。(完全錯(cuò)誤)???(請(qǐng)?zhí)嵋庖??
(8)?instanceOf?is?not?same?as?instanceof.?
???instanceOf?不是?instanceof。?
(9)?Private?constructors.?(legal)?
???私有?的Constructor。?(合法)?
(10)?An?assignment?statement?which?looks?like?a?comparison.?
????一個(gè)?賦值語句?看起來像?比較語句。?
????比如說if(a=true),和if(a==true)。對(duì)于這種題眼睛亮一點(diǎn)。?
(11)?System.exit()?in?try-catch-finally?blocks.?(finally?不會(huì)執(zhí)行)?
????在try-catch-final塊中的退出語句。?(finally不會(huì)執(zhí)行)?
(12)?Order?of?try-catch-finally?blocks?matters.?(若順序錯(cuò)的話:?error:?No?try?
?before?catch)?
????try-catch-final塊的順序問題。?
(13)?main()?can?be?declared?final.?(OK)?
????main()方法?可以聲明為?final.?
(14)?-0.0?==?0.0?is?true.?
????如題。?
(15)?A?class?without?abstract?methods?can?still?be?declared?abstract?
????沒有?抽象方法的類,仍然可以定義為抽象類。?
(16)?RandomAccessFile?descends?from?Object?and?implements?DataInput?and?Data?
Output.?
????RandomAccessFile?類繼承Object,并且實(shí)現(xiàn)了DataInput和DataOutput接口。?
(17)?Map?does?not?implement?Collection.?
????Map?并不實(shí)現(xiàn)?Collection.?
(18)?Dictionary?is?a?class,?not?an?interface.?
????Dictionary?是一個(gè)類,不是接口。?
(19)?Collection?is?an?Interface?where?as?Collections?is?a?helper?class.?(這題?
我倒沒見過,但還真容易看混)?
????Collection是一個(gè)接口,但?Collections卻是一個(gè)輔助類。?
(20)?Class?declarations?can?come?in?any?order.?
?????(也就是說:?class?Child?extends?Parents{}?
????????????????class?Parents{}?
??????這種順序是可以的.)?
????可以以任何順序申明類。?
(21)?Forward?references?to?variables?gives?compiler?error.?
????把?reference?給?變量,會(huì)產(chǎn)生編譯錯(cuò)誤。?(請(qǐng)?zhí)嵋庖??
(22)?Multi?dimensional?arrays?can?be?sparce.?
(這句話是說:?多維數(shù)組中子數(shù)組不一定必須有一定個(gè)數(shù)的元素,比如我們把一個(gè)二維數(shù)?
組看成一個(gè)矩陣,那么行與列中的元素可以不完整,可以不對(duì)齊.)?
(23)?Arrays,?whether?local?or?class-level,?are?always?initialized.?
????數(shù)組,無論是當(dāng)前的,還是類等級(jí)的,都會(huì)被初始化。?
(24)?Strings?are?initialized?to?null,?not?empty?string.?
????String?是被初始化為?null,不是空字符。?
(25)?An?empty?string?is?NOT?the?same?as?a?null?string.?
????一個(gè)空字符串?不是?一個(gè)null字符。?
(26)?A?declaration?cannot?be?labelled.?
????一個(gè)聲明語句不能被標(biāo)記。?
(27)?"continue"?must?be?in?a?loop(for,?do,?while).?It?cannot?appear?in?case??
constructs.?
????“continue”已經(jīng)要在一個(gè)循環(huán)里(如for,do,while),它不能在case語句中出現(xiàn)。?
?
(28)?Primitive?array?types?can?never?be?assigned?to?each?other,?eventhough?t?
he?primitives?themselves?can?be?assigned.?
???(也就是說:?ArrayofLongPrimitives?=?ArrayofIntegerPrimitives?會(huì)編譯出錯(cuò),但?
?longvar?=?intvar?是合法的)?
???Primitive(int,char,long等)數(shù)組是不能互相賦值的,即使它們本身可以。?
(29)?A?constructor?can?throw?any?exception.?
????一個(gè)Constructor可以拋出任何異常。?
(30)?Initilializer?blocks?are?executed?in?the?order?of?declaration.?
????初始化塊是按照聲明的順序執(zhí)行的。?
(31)?Instance?initializer(s)?gets?executed?ONLY?IF?the?objects?are?construct?
ed.?
????實(shí)例初始化語句塊只有在它建立后才會(huì)被執(zhí)行。?
(32)?All?comparisons?involving?NaN?and?a?non-Nan?would?always?result?false.??
(對(duì)大多數(shù)朋友來說這可是個(gè)盲點(diǎn)噢)?
????所有關(guān)于?NaN(Not?a?Number)?和?non-NaN?的比較,都返回false.?
????這條很重要。?
(33)?Default?type?of?a?numeric?literal?with?a?decimal?point?is?double.?
????我在這里把Java成員變量默認(rèn)初始化原則寫一下:?
??????????成員變量類型????????取值?
???????????????????byte??????????????0?
???????????????????short?????????????0?
???????????????????int???????????????0?
???????????????????long??????????????0L?
???????????????????char??????????????'/u0000'?
???????????????????float?????????????0.0F?
???????????????????double????????????0.0D?
???????????????????boolean???????????false?
???????????所有引用類型??????????null?
(34)?integer?(and?long?)?operations?/?and?%?can?throw?ArithmeticException?wh?
ile?float?/?and?%?will?never,?even?in?case?of?division?by?zero.?
????integer和long?操作?/和%?的話,?會(huì)拋出ArithmeticException,但是?float形不?
會(huì),即使是除以0。?
(35)?==?gives?compiler?error?if?the?operands?are?cast-incompatible.?
????==會(huì)產(chǎn)生編譯錯(cuò)誤,如果兩邊?不兼容的話。?
(36)?You?can?never?cast?objects?of?sibling?classes(?sharing?the?same?parent??
),?even?with?an?explicit?cast.?
?????你永遠(yuǎn)不可能?轉(zhuǎn)化具有同一個(gè)超類的類的對(duì)象,即使是刻意轉(zhuǎn)化。class?A?
class?sonA?extends?A?
class?daughterA?extens?A?
對(duì)這種情況:?
sonA?和?daughterA?之間不能相互轉(zhuǎn)化。?
即:sonA?son?=?(sonA)?daughterA();是非法的。?
而:sonA?son?=?(sonA)?A();A?father?=?(A)?sonA();是合法的。?
(37)?.equals?returns?false?if?the?object?types?are?different.It?does?not?rai?
se?a?compiler?error.?
????equals()?返回?false?如果對(duì)象類型不同,但不產(chǎn)生?編譯錯(cuò)誤。?
(38)?No?inner?class?can?have?a?static?member.(but?static?inner?class?can)?
????沒有內(nèi)部類?可以擁有?靜態(tài)成員。(但靜態(tài)內(nèi)部類可以)?
(39)?File?class?has?NO?methods?to?deal?with?the?contents?of?the?file.(also?t?
he?existing?directory)?
????File類沒有?任何?處理文件內(nèi)容的方法。(當(dāng)然,存在的目錄也一樣)?
(40)?InputStream?and?OutputStream?are?abstract?classes,?while?DataInput?and??
DataOutput?are?interfaces.?
????InputStream?和?OutputStream?是?抽象類,但是?DataInput?和?DataOutput是?接?
口。?
?
總結(jié)
以上是生活随笔為你收集整理的SCJP考题中的陷阱---来自水木清华BBS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《MongoDB入门教程》第07篇 CR
- 下一篇: 《MongoDB入门教程》第21篇 CR