| 1.變量的初始化,如果是類(lèi)成員變量,則自動(dòng)被初始化;如果是方法的局部變量,則不會(huì )被編譯器自動(dòng)初始化,訪(fǎng)問(wèn)就會(huì )編譯錯誤。 2.接口能夠擴展一個(gè)或多個(gè)其他接口,不能實(shí)現接口。 3.抽象實(shí)現類(lèi)不必實(shí)現接口方法。 4.關(guān)于局部變量和類(lèi)成員之間的關(guān)系: 如果局部變量和類(lèi)成員同名,那么該方法中認局部變量。 5.Boolean是引用類(lèi)型和String類(lèi)似,初始值為null;而boolean是基本類(lèi)型,初始值為false。 6.所有對象引用類(lèi)型變量默認初始值為null,即不指向任何對象。注意數組本身也是對象, 所以沒(méi)有初始化的數組引用在自動(dòng)初始化后其值也是null。 7.unsigned不是Java的關(guān)鍵字,在Java中,只有字符型是不帶符號的整數。 8.Java語(yǔ)言中規定,用來(lái)指定數組長(cháng)度的數值類(lèi)型只能是byte,short或int,而不能是long,double之類(lèi)的。。。。 9.沒(méi)有訪(fǎng)問(wèn)控制符,則訪(fǎng)問(wèn)控制是默認的,這是指包級,即包內可見(jiàn)! 10.3/0,3%0 ArithmeticException 3.0/0 Infinity 3.0%0 NaN。 11.對象類(lèi)型(不是引用變量的類(lèi)型)決定在運行時(shí)使用那個(gè)重寫(xiě)方法。 12.引用類(lèi)型決定在編譯時(shí)使用那個(gè)重載方法。 13.子類(lèi)不能重寫(xiě)父類(lèi)的靜態(tài)方法,也不能把父類(lèi)不是靜態(tài)的重寫(xiě)成靜態(tài)的方法。 在子類(lèi)中聲明和父類(lèi)相同的方法就可以將父類(lèi)的靜態(tài)方法隱藏!! 就是為了達到重寫(xiě)的目的,所以就要用到隱藏!!上邊我說(shuō)了,子類(lèi)是不能重寫(xiě)父類(lèi)的靜態(tài)方法的!! 14.如果全局變量是最終變量,則必須被初始化! 15.高內聚 cohesion 低耦合 coupling 封裝 encapsulation 繼承 inherit 多態(tài) polymorphism 16.接口默認的是抽象的,加不加public和類(lèi)一樣。 17.接口中定義的成員屬性變量默認都是static final。 18.在接口中定義的成員方法默認的都是public abstract。 19.不能重寫(xiě)final最終方法! 20.只有繼承的方法才可以被重寫(xiě),私有方法不能被繼承! 21.System.out.printf("%b",123); 打印true! 如果參數 arg 為 null,則結果為 "false"。 如果 arg 是一個(gè) boolean 值或 Boolean,則結果為 String.valueOf() 返回的字符串。否則結果為 "true"。 22.BufferedWriter類(lèi)提供了newLine() 方法,它使用平臺自己的行分隔符概念,此概念由系統屬性 line.separator 定義。并非所有平臺都使用新行符 ('\n') 來(lái)終止各行。因此調用此方法來(lái)終止每個(gè)輸出行要優(yōu)于直接寫(xiě)入新行符。 BufferedWriter類(lèi)提供了readLine() 方法。 23.加寬先于裝箱執行,加寬先于var-arg執行,裝箱先于var-arg執行! 24.Local loc=Local.getDisplayCountry()+" "+df.Format(d));//Date d DateFormat df。 25.swith語(yǔ)句要求他的case表達式是常量,而包裝器變量(甚至final static包裝器變量)不會(huì )被視作常量 26.java.lang.Throwable包含Error和Exception,Exception中又有RuntimeException。 27.為了使類(lèi)是線(xiàn)程安全的,需要同步訪(fǎng)問(wèn)可交換字段的方法:對靜態(tài)字段的訪(fǎng)問(wèn)應該通過(guò)靜態(tài)同步方法完成, 訪(fǎng)問(wèn)非靜態(tài)字段應該通過(guò)非靜態(tài)同步方法完成。 28.注意 sleep是靜態(tài)方法在使用sleep和wait方法是都需要用try catch包圍并拋出InterrruptException。 29.必須從同步環(huán)境內調用wait() notify() notifyAll()!線(xiàn)程不能調用對象上的等待來(lái)通知方法,除非它擁有那個(gè)對象鎖。 30.當在對象上調用wait()方法時(shí),執行該代碼的線(xiàn)程立即放棄它在對象上的鎖。然而,當調用notify()時(shí),并不意味著(zhù)這是線(xiàn)程會(huì )放棄其鎖。 如果線(xiàn)程仍然在完成同步代碼,則線(xiàn)程在移出同步代碼之前不會(huì )放棄鎖。因此,只調用notify()不意味著(zhù)這時(shí)該鎖將變得可用! 31.如果wait()的線(xiàn)程不用該鎖,則它將拋出IllegalMonitorStateException。這個(gè)異常不是檢查異常,不必明確捕獲它! 32.如果沒(méi)有異常出現或異常被捕獲,處理,則在退出try...catch...finally結構后,會(huì )繼續執行后續的代碼。 33.對象創(chuàng )建中不能時(shí)能通配符,例如new ArrayList<? extends Animal>()將不能編譯。 34.toAraay()方法中沒(méi)有什么奇怪的東西,它有兩種情況:一個(gè)是返回心得Object數組,一個(gè)是使用你將其作為目標數組發(fā)送的數組List oL ;Object[] oa=iL.toAraay();Integer[] ia2=new Integer[3];ia2 =iL.toArray(ia2); 35.Collections.reverseOrder()返回一個(gè)比較器,reverseOrder(Comparator<T> cmp)返回一個(gè)比較器,它強行逆轉指定比較器的順序。如果指定比較器為 null,則此方法等同于 reverseOrder()。例子Collections.sort(list,Collections.reverseOrder(new MyComparator())); 36.List myList=Arrays.asList(myArray); 37.請求垃圾收集的最簡(jiǎn)單方法是System.gc()。 38.Java提供了一種機制,使你能夠在對象剛要被垃圾收集器刪除之前運行一些代碼,這段代碼位于名為finalize()的方法內,所有類(lèi)從Object類(lèi)繼承這個(gè)方法。 39.永遠不能指望垃圾收集器刪除一個(gè)對象(不確定什么時(shí)候運行),因此,放入類(lèi)的重寫(xiě)方法finalize()中的任何代碼無(wú)法保證運行。 40.對于任何指定的對象,finalize()(至多)只會(huì )被垃圾收集器調用一次! 41.Arrays.sort(ay),Arrays.sort(ay,Comparator)注意:sort方法被重寫(xiě)了一百萬(wàn)次,以便匹配類(lèi)型, 排序基本類(lèi)型的sort方法始終基于自然排序進(jìn)行排序,不會(huì )使用Comparator。 42.不能在靜態(tài)方法中使用super和this?。?! 43.try catch finally語(yǔ)句塊 后面兩個(gè)可以都有,也可以只有一個(gè),不能一個(gè)沒(méi)有??!就是說(shuō)try finally也合法?。?! 44.實(shí)現writeObject()和readObject()的最常見(jiàn)的原因是:當你必須手動(dòng)保存對象狀態(tài)的某一部分是。如果你選擇這樣做,就可以自己讀和寫(xiě)所有的狀態(tài),但是,這非常少見(jiàn)。因此,如果你只想自己執行一部分串行化/反串行化工作,則必須調用defaultReadObject()和defaultWriteObject()方法來(lái)做余下的工作,而且回讀時(shí)必須和寫(xiě)的訪(fǎng)問(wèn)順序相同?。?! 45.yield()從未導致線(xiàn)程轉到等待/睡眠/阻塞狀態(tài)。在大多數情況下yield()方法將導致線(xiàn)程從運行狀態(tài)轉到可運行狀態(tài),以便同優(yōu)先級的線(xiàn)程有機會(huì )運行,但再次強調,它可能根本沒(méi)有效果! 46.sleep() yield()是靜態(tài)方法,用的時(shí)候是Thread.sleep(),如果用t.sleep()調用,其實(shí)他們不影響實(shí)例t。因為,他們被定義為始終影響當前正在執行的線(xiàn)程。 47.非靜態(tài)方法interrupt()方法可以中斷線(xiàn)程。如果線(xiàn)程在調用 Object 類(lèi)的 wait()、wait(long) 或 wait(long, int) 方法,或者該類(lèi)的 join()、join(long)、join(long, int)、sleep(long) 或 sleep(long, int) 方法過(guò)程中受阻,則其中斷狀態(tài)將被清除,它還將收到一個(gè) InterruptedException。 所以wait,jion,sleep這幾個(gè)方法需要異常捕獲來(lái)捕獲InterruptedException。 48.final變量必須初始化,不過(guò)非靜態(tài)final變量可以在構造函數中初始化??! 49.可以傳遞多個(gè)IS-A測試的任何Java對象都可以被看做是多態(tài)的。除了Object類(lèi)型的對象之外,其他所有Java對象都是多態(tài)的,這在于它們?yōu)樽约旱念?lèi)型以及Object類(lèi)傳遞IS-A測試。 50.PriorityQueue類(lèi)的三個(gè)方法:peek(),poll(),offer(),分別是peek查看,poll輸出值并刪除,offer增加。 51.泛型中的類(lèi)型不能是基本類(lèi)型(int),只能是包裝類(lèi)型(Integer)。 52.Animal animal=new Dog();Cat cat=(Cat)animal;編譯通過(guò),但是運行時(shí)會(huì )拋出ClassCastException異常??! 53.Arrays.sort方法根據元素的自然順序對指定對象數組按升序進(jìn)行排序。數組中的所有元素都必須實(shí)現 Comparable 接口。此外,數組中的所有元素都必須是可相互比較的(也就是說(shuō),對于數組中的任何 e1 和 e2 元素而言,e1.compareTo(e2) 不得拋出 ClassCastException)。 保證此排序是穩定的:不會(huì )因調用 sort 方法而對相等的元素進(jìn)行重新排序。 54.PriorityQueue元素按照其自然順序進(jìn)行排序,或者根據構造隊列時(shí)提供的 Comparator 進(jìn)行排序,具體取決于所使用的構造方法。 55.xxxValue().6中包裝器類(lèi)中的每一種都有6個(gè)方法,因此任何數值包裝器都能夠被轉換為任何基本數值類(lèi)型。。parseXxx()返回指定的基本類(lèi)型?。?! 56.valueOf()返回新創(chuàng )建的包裝器對象,對象的類(lèi)型與調用該方法的類(lèi)型相同。 57.switch的表達式結果必須int(隱式和強制轉換也行)或者enum(Java5),long,double,float等不可以! 58.case常量必須與switch表達式可用的類(lèi)型相同,case常量必須是編譯時(shí)常量(final (static) int類(lèi)型也可以),所以包裝器類(lèi)型的變量(即使是static final)不會(huì )被視作常量! 59.一定要記?。寒斈阒貙?xiě)equals()時(shí),必須接受一個(gè)類(lèi)型為Object的參數,但當你重寫(xiě)compareTo()時(shí),你應該接受你正在排序的類(lèi)型的參數。沒(méi)有用泛型則是compareTo(Object obj)!如果類(lèi)聲明為class xx implements Comparable<T>,那么正確實(shí)現為compareTo(T t),這樣才正確實(shí)現了接口的方法! 60.對象創(chuàng )建的時(shí)候不能使用通配符,即不能new class<?>()! 61.instanceof 判斷依據對象類(lèi)型,而不是引用類(lèi)型! 62.實(shí)例變量和對象駐留在堆上,局部變量駐留在棧上! 63.String s="abc";在這種簡(jiǎn)單的情況下,"abc"將進(jìn)入池內,s將引用它。 String s=new String("abc");在這種情況下,因為我們使用了new關(guān)鍵字,所以Java將在常規內存(不是在池內)中創(chuàng )建一個(gè)新的String對象,并且s將引用它。此外,常量"abc"將放置在池內。 |
聯(lián)系客服