01、抽象類和接口的區(qū)別
接口是對動作的抽象揣苏,抽象類是對根源的抽象。
- 抽象類要被子類繼承件舵,接口要被子類實現(xiàn)卸察。
- 抽象類和接口都不能直接實例化,如果要實例化铅祸,抽象類變量必須指向?qū)崿F(xiàn)所有抽象方法的子類對象坑质,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類對象。
- 接口里面只能對方法進行聲明临梗,抽象類既可以對方法進行聲明也可以對方法進行實現(xiàn)涡扼。
- 接口里定義的變量只能是公共的靜態(tài)的常量,抽象類中的變量是普通變量盟庞。
- 抽象類里的抽象方法必須全部被子類所實現(xiàn)吃沪,如果子類不能全部實現(xiàn)父類抽象方法,那么該子類只能是抽象類什猖。同樣票彪,一個實現(xiàn)接口的時候,如不能全部實現(xiàn)接口方法不狮,那么該類也只能為抽象類降铸。
- 抽象方法只能申明,不能實現(xiàn)摇零,接口是設(shè)計的結(jié)果 推掸,抽象類是重構(gòu)的結(jié)果
- 抽象類里可以沒有抽象方法,如果一個類里面有抽象方法驻仅,那么這個類一定是抽象類谅畅。
02、(持久化)數(shù)據(jù)存儲(五種)
- 網(wǎng)絡(luò)存儲:使用http(s)協(xié)議或者Socket通信作為傳輸方式噪服。應(yīng)用網(wǎng)絡(luò)框架來接收/發(fā)送數(shù)據(jù)铃彰,數(shù)據(jù)格式通常是XML、Json芯咧。由于數(shù)據(jù)在傳輸過程中容易丟包牙捉、攔截,所以其安全性最差敬飒。
- 文件存儲:通過字節(jié)流操作邪铲,對二進制數(shù)據(jù)進行處理。
- 數(shù)據(jù)庫存儲:SQLite是一個輕量級數(shù)據(jù)庫无拗,以及在其基礎(chǔ)上封裝的一些數(shù)據(jù)庫框架带到,還有其他方式的數(shù)據(jù)庫等。是一個數(shù)據(jù)列表的方式存儲數(shù)據(jù)英染,其在安全上和存取效率上也是最好的揽惹。
- ContentProvider:在不同應(yīng)用程序中共享數(shù)據(jù)時被饿,其數(shù)據(jù)的暴露方式是采取類似數(shù)據(jù)庫中表的方式,它是通過Uri來查詢ContentProvider中的數(shù)據(jù)的搪搏。
- SharePreference:是一種輕量級的數(shù)據(jù)存儲機制狭握,它可以將一些簡單數(shù)據(jù)類型的數(shù)據(jù),以鍵值對的方式存儲在應(yīng)用程序的目錄中疯溺,以XML格式存在论颅。
03、泛型中extends和super的區(qū)別
上界類型通配符(? extends)
下界類型通配符(? super )
- 限定通配符總是包括自己
- 上界類型通配符:add方法受限
- 下界類型通配符:get方法受限
- 如果你想從一個數(shù)據(jù)類型里獲取數(shù)據(jù)囱嫩,使用 ? extends 通配符
- 如果你想把對象寫入一個數(shù)據(jù)結(jié)構(gòu)里恃疯,使用 ? super 通配符
- 如果你既想存,又想取墨闲,那就別用通配符
- 不能同時聲明泛型通配符上界和下界
04今妄、父類的靜態(tài)方法能否被子類重寫
- 靜態(tài)方法:java中,static修飾符修飾的方法就是靜態(tài)方法鸳碧。所謂靜態(tài)就是指:在編譯之后所分配的內(nèi)存會一直存在(不會被回收)蛙奖,直到程序退出內(nèi)存才會釋放這個空間。
- 重寫:子類繼承父類后杆兵,定義了一個和父類中的一模一樣方法雁仲,這個一模一樣是值方法名和參數(shù)的定義一模一樣。這時候子類要實現(xiàn)這個方法琐脏,就稱為對父類方法的重寫攒砖。
- 父類的靜態(tài)方法可以被子類繼承,但是不能重寫日裙。
05吹艇、進程和線程的區(qū)別
- 進程是操作系統(tǒng)資源分配的基本單位
- 線程是任務(wù)調(diào)度和執(zhí)行的基本單位
- 進程是資源分配的最小單位,線程是程序執(zhí)行的最小單位昂拂。
- 進程有自己的獨立地址空間受神,每啟動一個進程,系統(tǒng)就會為它分配地址空間格侯,建立數(shù)據(jù)表來維護代碼段鼻听、堆棧段和數(shù)據(jù)段,這種操作非常昂貴联四。而線程是共享進程中的數(shù)據(jù)的撑碴,使用相同的地址空間,因此CPU切換一個線程的花費遠比進程要小很多朝墩,同時創(chuàng)建一個線程的開銷也比進程要小很多醉拓。
- 線程之間的通信更方便,同一進程下的線程共享全局變量、靜態(tài)變量等數(shù)據(jù)亿卤,而進程之間的通信需要以通信的方式(IPC)進行愤兵。不過如何處理好同步與互斥是編寫多線程程序的難點。
- 但是多進程程序更健壯排吴,多線程程序只要有一個線程死掉秆乳,整個進程也死掉了,而一個進程死掉并不會對另外一個進程造成影響傍念,因為進程有自己獨立的地址空間矫夷。
06葛闷、final憋槐,finally,finalize的區(qū)別
- final修飾符(關(guān)鍵字)淑趾,final可以用來修飾類阳仔,方法和變量(成員變量或局部變量)。修飾的類不能被繼承扣泊。修飾的變量和方法不能被修改近范。
- 異常處理的一部分,它只能用在try/catch語句中延蟹。
- finalize()方法评矩,在Object中定義,該方法一般由垃圾回收器來調(diào)用阱飘,當我們調(diào)用System的gc()方法的時候斥杜,由垃圾回收器調(diào)用finalize(),回收垃圾。