java中容易混淆的方法_java中容易混淆的概念
java中容易混淆的概念
1. 談?wù)?final, finally, finalize 的區(qū)別final—修飾符(關(guān)鍵字)如果一個類被聲明為 final,意味著它不能再派生出新的子類,不 能作為父類被繼承。因此一個類不能既被聲明為 abstract 的,又被聲明為 final 的。將變量或 方法聲明為 final,可以保證它們在使用中不被改變。被聲明為 final 的變量必須在聲明時給定初 值,而在以后的引用中只能讀取,不可修改。被聲明為 final 的方法也同樣只能使用,不能重載finally—再異常處理時提供 finally 塊來執(zhí)行任何清除操作。如果拋出一個異常,那么相匹 配的 catch 子句就會執(zhí)行,然后控制就會進(jìn)入 finally 塊(如果有的話)。finalize—方法名。Java 技術(shù)允許使用 finalize() 方法在垃圾收集器將對象從內(nèi)存中清除出 去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象 調(diào)用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以 整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象 調(diào)用的。 2. Anonymous Inner Class (匿名內(nèi)部類) 是否可以 extends(繼承)其它類,是否可以 implements(實(shí)現(xiàn))interface(接口)?匿名的內(nèi)部類是沒有名字的內(nèi)部類。不能 extends(繼承) 其它類,但一個內(nèi)部類可以作為 一個接口,由另一個內(nèi)部類實(shí)現(xiàn)。 3. Static Nested Class 和 Inner Class 的不同。Nested Class (一般是 C++的說法),Inner Class (一般是 JAVA 的說法) 。Java 內(nèi)部類 與 C++嵌套類最大的不同就在于是否有指向外部的引用上。注: 靜態(tài)內(nèi)部類(Inner Class )意味著 1 創(chuàng)建一個 static 內(nèi)部類的對象,不需要一個外部 類對象,2 不能從一個 static 內(nèi)部類的一個對象訪問一個外部類對象 4. // throws an Assertionerror if a <= 0 斷言可以有兩種形式: assert Expression1 ; assert Expression1 : Expression2 ; Expression1 應(yīng)該總是產(chǎn)生一個布爾值。 Expression2 可以是得出一個值的任意表達(dá)式。這個值用于生成顯示更多調(diào)試信息的 String 消息。 斷言在默認(rèn)情況下是禁用的。要在編譯時啟用斷言,需要使用 source 1.4 標(biāo)記: javac -source 1.4 Test.java 要在運(yùn)行時啟用斷言,可使用 -enableassertions 或者 -ea 標(biāo)記。 要在運(yùn)行時選擇禁用斷言,可使用 -da 或者 -disableassertions 標(biāo)記。 要系統(tǒng)類中啟用斷言,可使用 -esa 或者 -dsa 標(biāo)記。還可以在包的基礎(chǔ)上啟用或者禁用 斷言。 可以在預(yù)計正常情況下不會到達(dá)的任何位置上放置斷言。斷言可以用于驗(yàn)證傳遞給私有方 法的參數(shù)。不過,斷言不應(yīng)該用于驗(yàn)證傳遞給公有方法的參數(shù),因?yàn)椴还苁欠駟⒂昧藬嘌?#xff0c; 公有方法都必須檢查其參數(shù)。不過,既可以在公有方法中,也可以在非公有方法中利用斷 言測試后置條件。另外,斷言不應(yīng)該以任何方式改變程序的狀態(tài)。 8. GC 是什么? 為什么要有 GC? (基礎(chǔ))GC 是垃圾收集器。Java 程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占鲿詣舆M(jìn)行管理。 要請求垃圾收集,可以調(diào)用下面的方法之一: System.gc() Runtime.getRuntime().gc() String s = new String(“xyz“); 創(chuàng)建了幾個 String Object? 兩個對象,一個是“xyx”,一個是指向“xyx”的引用對象 s。Math.round(11.5)等於多少? Math.round(-11.5)等於多少?Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;short s1 = 1; s1 = s1 + 1; 有什么錯? short s1 = 1; s1 += 1;有什么錯?short s1 = 1; s1 = s1 + 1;有錯,s1 是 short 型,s1+1 是 int 型,不能顯式轉(zhuǎn)化為 short 型。可修改為 s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1 正確。 9. sleep() 和 wait() 有什么區(qū)別? sleep()方法是使線程停止一段時間的方法。在 sleep 時間間隔期滿后,線程不一定立 即恢復(fù)執(zhí)行。這是因?yàn)樵谀莻€時刻,其它線程可能正在運(yùn)行而且沒有被調(diào)度為放棄執(zhí)行, 除非(a)“醒來”的線程具有更高的優(yōu)先級;(b)正在運(yùn)行的線程因?yàn)槠渌蚨枞?wait()是線程交互時,如果線程對一個同步對象 x 發(fā)出一個 wait()調(diào)用,該線程會暫停 執(zhí)行,被調(diào)對象進(jìn)入等待狀態(tài),直到被喚醒或等待時間到。 10. Java 有沒有 goto? Goto—java 中的保留字,現(xiàn)在沒有在 java 中使用。 11. 數(shù)組有沒有 length()這個方法? String 有沒有 length() 這個方法? 數(shù)組沒有 length()這個方法,有 length 的屬性。 String 有 length()這個方法。 12. Overload 和 Override 的區(qū)別。Overloaded 的方法是否可以改變返回值的類型? 方法的重寫 Overriding 和重載 Overloading 是 Java 多態(tài)性的不同表現(xiàn)。 重寫 Overriding 是父類與子類之間多態(tài)性的一種表現(xiàn), 重載 Overloading 是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類 有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding) 。子類的對象使用這個方法時, 將調(diào)用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義 了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載 (Overloading)。Overloaded 的方法是可以改變返回值的類型。 13. Set 里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢? 是用==還是 equals()? 它們有何區(qū)別? Set 里的元素是不能重復(fù)的,那么用 iterator() 方法來區(qū)分重復(fù)與否。equals()是判讀兩個 Set 是否相等。
總結(jié)
以上是生活随笔為你收集整理的java中容易混淆的方法_java中容易混淆的概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: json与java反射_Java 对象的
- 下一篇: 幸福树多久浇一次水(幸福树严重掉叶子怎么