版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一、 基本知識1. JDK和JRE的區(qū)別答:JDK是java語言開發(fā)工具包,包含JRE和開發(fā)工具(javac.exe等);JRE是java語言的運(yùn)行環(huán)境,包含JVM和核心類庫;JVM是java虛擬機(jī),保證了java的跨平臺性。2. JVM跨平臺嗎?答:JVM不具有跨平臺性,不同的操作系統(tǒng)所對應(yīng)的JVM不一樣。正是因?yàn)镴VM的不跨平臺,才能夠使java語言具有跨平臺性。3. 保留字是什么?答:保留字是還未使用的關(guān)鍵字,可能在java以后的版本中使用。有g(shù)oto和const。4. java語言的特點(diǎn)?答:完全面向?qū)ο?,跨平臺性,開源,簡單易學(xué),安全可靠,高性能,分布式處理,多線程,健壯性,多態(tài)。5
2、. main是關(guān)鍵字嗎?答:不是的。main是主函數(shù)的名字,能夠被虛擬機(jī)識別,是程序執(zhí)行的入口。6. path和classpath的區(qū)別?答:path環(huán)境變量配置的是可執(zhí)行文件.exe的執(zhí)行路徑;能夠在不同盤符下訪問path路徑下的可執(zhí)行文件。Classpath配置的java語言編譯后生成的字節(jié)碼文件的執(zhí)行路徑。7. 計(jì)算機(jī)最基本的存儲單位是:字節(jié)(byte) 計(jì)算機(jī)能直接識別的進(jìn)制是:二進(jìn)制8進(jìn)行運(yùn)算的時(shí),變量和常量有什么區(qū)別?答:變量在運(yùn)算過程中的值是變化的,可以被多次賦值。常量則是固定的。9標(biāo)識符的組成?以及命名規(guī)則?答:標(biāo)識符有26個(gè)字母的大小寫,0到9,_和$組成。命名規(guī)則:不能使用
3、關(guān)鍵字,不能數(shù)字開頭,嚴(yán)格區(qū)分大小寫,要見名知義。函數(shù)名和變量名如果是多個(gè)單詞組成,第一個(gè)單詞的首字母小寫,其余首字母大寫。類名和接口名如果是多個(gè)單詞組成,首字母全部大寫。包名全部小寫。常量名全部大寫,如果是多個(gè)單詞,用_隔開。10.變量數(shù)據(jù)類型分為哪幾種?如何使用變量?答:基本數(shù)據(jù)類型:整形:包括byte、short、int、long。浮點(diǎn)型:包括float、double。字符型;char;布爾型:boolean。引用數(shù)據(jù)類型:數(shù)組、類、接口。變量需要先定義,再賦值,才能使用。11.常量分為哪幾種?答:自定義常量和字面值常量。自定義常量是我們自己通過final修飾定義的常量。字面值常量包括整
4、數(shù)、小數(shù)、布爾、字符、字符串。12.byte的范圍多少?char的范圍多少?答:byte范圍-128到127 。 char范圍0到65535.13. ASCII碼表中 字符 '0' , 'a' , 'A' 分別對應(yīng)int類型的值是多少.答:0在表中對應(yīng)的值是48,a對應(yīng)的是97;A對應(yīng)的是65.14. long是8個(gè)字節(jié),float是4個(gè)字節(jié),為什么long 比 float小?答:底層采用的運(yùn)算規(guī)則不一樣。15. 以取值范圍的大小排列數(shù)據(jù)的基本類型.答:double>float>long>int>char>short
5、>byte16.+=、-=、這些運(yùn)算符內(nèi)隱含了強(qiáng)制類型轉(zhuǎn)換。17.+和的使用?答:單獨(dú)使用的時(shí)候,在前在后都一樣。參與運(yùn)算的時(shí)候,在前是先自加或者自減,然后再用這個(gè)結(jié)果參與運(yùn)算。在后是先參與運(yùn)算,再進(jìn)行自加或者自減。18. 邏輯或 " | " 和 短路或 " | "有什么區(qū)別?答:|不管前面的結(jié)果是真是假后面的都會運(yùn)算,|前面為真后面的不參與運(yùn)算。但是結(jié)果是一樣的。19. 邏輯與 " & " 和 短路與 " && " 由什么區(qū)別?答:&不管前面的結(jié)果是真是假后面的都會運(yùn)算,&a
6、mp;&前面為假后面的不參與運(yùn)算。但是結(jié)果是一樣的。20.Math.round原理是什么?答:先加0.5,然后再取floor值。21.生成隨機(jī)數(shù)的方法?答:第一種:Random類中的方法;第二種Math.random()方法,生成的是0.0和1.0范圍之間的小數(shù)。22.ifelse.和三元表達(dá)的區(qū)別答:能用三元表達(dá)式寫的就能用if語句寫,但是能用if語句寫的,三元表達(dá)式不一定能寫。三元表達(dá)式必須要有一個(gè)結(jié)果。23.while、do while 、for的區(qū)別?答:do while語句是先執(zhí)行后判斷,while和for先判斷后執(zhí)行。for循環(huán)結(jié)束后,其中定義的初始化條件不能再使用。24.
7、if和switch區(qū)別?答:if1.對具體的值進(jìn)行判斷。2.對區(qū)間判斷。3.對運(yùn)算結(jié)果是boolean類型的表達(dá)式進(jìn)行判斷。switch: 1.對具體的值進(jìn)行判斷。2.值的個(gè)數(shù)通常是固定的 25. switch語句的表達(dá)式可以放什么?答:byte、short、int、char。JDK1.5以后可以使用枚舉,1.7之后可以使用String。26. 死循環(huán)的兩種寫法.答:while(true) 和 for(;)27. break和continue還有Return的區(qū)別答:break是完全跳出循環(huán),不再執(zhí)行循環(huán)體的代碼。也可以用在switch語句中。Continue是提前結(jié)束本次循環(huán),進(jìn)入下次循環(huán)。
8、Return是結(jié)束方法。28.switch中break可以省略嗎?default可以省略嗎?答:break在最后一個(gè)可以省略,其他的不要省略。Default可以省略。29:方法重載和方法重寫的區(qū)別?答:方法重載是在同一個(gè)類中出現(xiàn)同名方法,參數(shù)列表不同,與返回值類型無關(guān)。方法重寫是在子父類間,子類出現(xiàn)和父類聲明完全相同的方法時(shí),就成為方法重寫。重寫要求返回值必須相同或者有子父類關(guān)系。30.方法的注意事項(xiàng):答:要明確方法的返回值類型,明確方法的參數(shù)列表。31.方法的調(diào)用?答:有返回值時(shí)可以單獨(dú)調(diào)用,但是沒有意義;也可以放在輸出語句中;可以賦值給變量。無返回值直接調(diào)用即可。32.數(shù)組的定義格式?答:
9、int arr =new int5;int arr= new int5;int arr = new int1,5,6,7,; int arr = 23,6,8,9二維數(shù)組String arr = new String3;Syso(arr0) 打印的結(jié)果是null。33.數(shù)組的默認(rèn)值?答;整形的默認(rèn)值是0,引用數(shù)據(jù)類型是null;boolean型的是false。34.棧內(nèi)存和堆內(nèi)存?答:棧內(nèi)存用于存儲局部變量和代碼的執(zhí)行,堆內(nèi)存中都是new出來的。35.數(shù)組和集合的區(qū)別:(1)長度區(qū)別:數(shù)組長度是固定的;集合長度可變。(2)存儲內(nèi)容:一個(gè)數(shù)組只能存儲同一種數(shù)據(jù)類型的元素;集合可以存儲不同數(shù)據(jù)類型
10、的元素。(3)數(shù)據(jù)類型:數(shù)組能夠存儲基本數(shù)據(jù)類型,也能夠存儲引用數(shù)據(jù)類型;集合只能存儲引用數(shù)組類型。36.數(shù)組和集合的轉(zhuǎn)換?答:數(shù)組轉(zhuǎn)為集合:Arrays.asList(數(shù)組),轉(zhuǎn)為集合后不能添加、刪除元素。但是可以修改元素。把基本類型的數(shù)組轉(zhuǎn)為集合,把這個(gè)數(shù)組作為對象存入集合中。集合轉(zhuǎn)為數(shù)組:list.toArray().二、面向?qū)ο?7. 在棧內(nèi)存中。存儲位置不同,局部在棧,成員在堆(4)初始化值不同:成員變量是有默認(rèn)的初始化的值的;局部變量不賦值不能用。(5)生命周期不同:成員變量隨著對象的存在而存在,隨著對象的消失而消失;局部變量隨著方法的調(diào)用而存在,方法調(diào)用完畢而消失。38.變量的使
11、用順序?答:就近原則。先在局部找,局部找不到在本類中找,本類找不到就去父類找,找不到就編譯失敗。39.類和對象的關(guān)系?答:類是具有相同或相似一類事物的抽象;對象是類的實(shí)例化。40.java描述事物最基本的單位?答:類41.什么叫面向?qū)ο螅看穑好嫦驅(qū)ο笫且环N思想,它是基于面向過程的,強(qiáng)調(diào)的是具備功能的對象,讓對象調(diào)用方法解決問題。在開發(fā)中,要完成特定的功能就去尋找相應(yīng)的對象,如果找不到就創(chuàng)建對象,使用對象,維護(hù)完善對象。自己舉例說明:廚師做飯,女朋友洗衣服。思想特點(diǎn):1.讓復(fù)雜的事情簡單化;2,更符合人類的思維需求;3.角色從執(zhí)行者到指揮者。三大特征:封裝,繼承,多態(tài)。42.什么是封裝?封裝的原
12、則?好處?答:封裝就是把不需要對外暴露的狀態(tài)信息隱藏在對象內(nèi)部,不允許外部程序直接訪問對象的信息,而是通過該類對外提供公共的訪問方式對其訪問和操作。原則:(1)將不需要對外暴露的信息隱藏;(2)對外提供公共的訪問方式。好處:將變化隔離;提高了安全性;便于使用,提高了重用性。43.封裝就是私有,對嗎?為什么?答:private是封裝的一種體現(xiàn)形式。方法也是封裝。44. Java中參數(shù)傳遞的問題:答:如果是基本數(shù)據(jù)類型,傳遞的參數(shù)要和形參的類型一致;如果是引用數(shù)據(jù)類型,那么傳遞的參數(shù)類型和形參的一致,或者是他的子類。45. 構(gòu)造方法,set方法都可以給成員變量賦值,這兩種賦值方式有什么區(qū)別?答:構(gòu)
13、造方法主要作用是用來給對象初始化,賦值只是他的兼職工作,也可以不用賦值。Set方法只能用來賦值,在原有對象的基礎(chǔ)上賦值。46. static關(guān)鍵字的特點(diǎn)?注意事項(xiàng)是什么?有什么好處和弊端?答:(1)被static修飾的變量和方法隨著類的加載而加載(2)優(yōu)于對象存在(3)能夠被類名直接調(diào)用(4)資源共享。注意事項(xiàng):靜態(tài)方法中不可以定義this、super關(guān)鍵字,因?yàn)殪o態(tài)優(yōu)先于對象存在,靜態(tài)只能覆蓋靜態(tài)。好處:static能夠被類名直接調(diào)用,定義的是對象的共性內(nèi)容,不用每個(gè)對象單獨(dú)定義,節(jié)省空間。弊端:生命周期過長。47.類變量和實(shí)例變量的區(qū)別?答:(1)所屬不同:類變量屬于類,是對象的共性內(nèi)容;
14、實(shí)例變量屬于對象,是特性內(nèi)容。(2)存儲位置不同:類變量隨著類的加載存儲于方法區(qū);實(shí)例變量隨著對象的創(chuàng)建存儲于堆內(nèi)存中。(3)生命周期不同:類變量隨著類的加載而存在,隨著類的消失而消失;實(shí)例變量隨著對象的存在而存在,隨著對象的消失而消失。(4)調(diào)用方式不同:類變量能夠被類名直接調(diào)用,有對象的時(shí)候也能被對象調(diào)用;實(shí)例變量只能被對象調(diào)用。48. 構(gòu)造方法能不能重載?答:可以,在同一個(gè)類中,參數(shù)列表不同,與返回值無關(guān)。49.靜態(tài)代碼塊和構(gòu)造代碼塊的區(qū)別?答:(1)靜態(tài)代碼塊屬于類,給類進(jìn)行初始化,類一加載就會執(zhí)行,只執(zhí)行一次,經(jīng)常用于加載驅(qū)動。(2)構(gòu)造代碼塊給對象進(jìn)行統(tǒng)一初始化,每創(chuàng)建一次就會執(zhí)行
15、一次。50.什么是繼承?答:當(dāng)多個(gè)類中有很多共性的內(nèi)容時(shí),我們可以把這些共性內(nèi)容抽取出來封裝成一個(gè)類,讓這些類與這個(gè)封裝的類產(chǎn)生關(guān)系。這種關(guān)系就是繼承。51.繼承的的特點(diǎn)和好處,弊端?答:特點(diǎn):java只支持單繼承,但是能夠多層次繼承;接口能夠單繼承,也能夠多繼承。好處:(1)提高了代碼的復(fù)用性(2)提高了代碼的維護(hù)性(3)提高了代碼的擴(kuò)展性。(4)讓類與類產(chǎn)生了關(guān)系,是多態(tài)的前提。弊端:增強(qiáng)了類與類的耦合性。52.this和super 的區(qū)別?答:this代表對象的引用,super代表當(dāng)前對象父類的引用。53Super()和this()在構(gòu)造方法能同時(shí)使用嗎?答 :不能,super調(diào)用的是父
16、類的構(gòu)造,要放在構(gòu)造函數(shù)的第一行;this調(diào)用的是本類的構(gòu)造,也要放在第一行。Super關(guān)鍵字和this關(guān)鍵字能否在構(gòu)造函數(shù)中共存?答:能。54.為什么每個(gè)構(gòu)造函數(shù)中第一行都有默認(rèn)的super()?用于子類對象訪問父類前,對父類數(shù)據(jù)進(jìn)行初始化。55.為什么默認(rèn)的super()都是空參的呢?因?yàn)镺bject類是所有 類的父類,Object中只有一個(gè)空參構(gòu)造。56.構(gòu)造方法的特點(diǎn)?答:(1)方法名和類名相同(2)沒有返回值,連viod都沒有。(3)不用寫return,可以有return;57.this的作用?答:(1)區(qū)別局部變量和成員變量(2)代表本類對象的引用(3)也可以用于構(gòu)造方法的調(diào)用。5
17、8.子父類都有靜態(tài)代碼塊,構(gòu)造代碼塊,構(gòu)造方法的執(zhí)行順序?答:父類的靜態(tài)代碼塊先執(zhí)行,再執(zhí)行子類中的靜態(tài)代碼塊;接著執(zhí)行父類的構(gòu)造代碼塊和父類的構(gòu)造方法,最后執(zhí)行子類的構(gòu)造代碼塊和構(gòu)造方法。59. final修飾的變量的初始化時(shí)機(jī):答:a.未被static關(guān)鍵字修飾* 可以顯示初始化* 可以在構(gòu)造方法中初始化b.被static修飾* 可以顯示初始化* 可以在靜態(tài)代碼塊中初始化* 不能在構(gòu)造方法中初始化60. final如果修飾局部變量,會發(fā)生什么事情?答:基本類型,是值不能被改變,引用類型,是地址值不能被改變,對象中的屬性可以改變。61. 什么是多態(tài)?多態(tài)的體現(xiàn),前提,好處和弊端分別是什么?答
18、:同一事物在不同時(shí)刻表現(xiàn)出來的不同狀態(tài)。體現(xiàn):父類引用指向子類對象,父類引用作為參數(shù)可以接收其子類對象,接口引用作為參數(shù)可以接收其實(shí)現(xiàn)類對象。前提:(1)類與類之間要有關(guān)系,要么繼承,要么實(shí)現(xiàn)(2)要有方法重寫(3)父類或者接口引用指向子類對象。好處:(1)提高了代碼的維護(hù)性(2)提高了代碼的擴(kuò)展性,父類引用指向子類對象弊端:父類引用只能調(diào)用父類的方法,不能調(diào)用子類特有的方法和屬性。*向上轉(zhuǎn)型:父類或者父接口指向子類對象。*向下轉(zhuǎn)型:把那個(gè)引用強(qiáng)制轉(zhuǎn)為子類對象。62.多態(tài)中成員方法和變量的特點(diǎn)?答:(1)一般方法:編譯看左邊,運(yùn)行看右邊。(2)靜態(tài)方法:編譯看左邊,運(yùn)行看左邊。(3)變量:編譯
19、看左邊,運(yùn)行看左邊。63.抽象類和抽象方法的特點(diǎn),有什么關(guān)系?答:抽象類不能創(chuàng)建對象,需要子類繼承;抽象方法沒有方法體,需要子類去實(shí)現(xiàn)。抽象類不一定含有抽象方法,抽象方法一定在抽象類中。64.抽象類中的抽象方法和非抽象方法的區(qū)別?答:抽象方法要求子類必須重寫,完成相應(yīng)的功能;非抽象方法讓子類繼承,提高代碼的復(fù)用性。65.abstract不能和哪些關(guān)鍵字共同存在?答:private:私有的方法是不可見的,無法被復(fù)寫final:被final修飾的方法是最終方法,無法被復(fù)寫static:被static修飾的方法,要隨類加載到方法區(qū),由于抽象方法沒有方法體所以不能加載66.final修飾的變量、方法、
20、和類有什么特點(diǎn)?答:final修飾的變量只能賦值一次,不能發(fā)生改變,如果修飾的基本類型,是其值不能發(fā)生改變,如果修飾的引用數(shù)據(jù)類型,是地址值不能發(fā)生改變;final修飾的方法不能被重寫;final修飾的類不能被繼承,也稱最終類。67.final、finally、finalized的區(qū)別?答:(1)final是一個(gè)關(guān)鍵字,是用來修飾類,成員變量,成員方法的,它修飾的類不能被繼承,但是可以繼承其他類,它修飾的成員變量是一個(gè)常量,只能賦值一次它修飾的成員方法不能被子類重寫(2)finally是 try-catch-finally語句的一個(gè)模塊,正常情況下里邊的代碼永遠(yuǎn)會執(zhí)行,一般是用來釋放資源的(3
21、)finalize是Object類中的方法,當(dāng)對象變成垃圾的時(shí)候,由GC(Java中的垃圾回收機(jī)制)來調(diào)用該類的finalize()方法回收垃圾。68.接口中的成員的特點(diǎn)?答:都是常量,public static final ;方法都是抽象方法,public abstract;沒有構(gòu)造方法。69、類與類、類與接口、接口與接口的關(guān)系?答:類只能單繼承類,但是能夠多層次繼承;類實(shí)現(xiàn)接口,能同時(shí)實(shí)現(xiàn)多個(gè)接口,能在繼承類的同時(shí)實(shí)現(xiàn)接口;接口可以單繼承接口,也能多繼承。70.接口和抽象類的區(qū)別?(1)成員的特點(diǎn):抽象類可以有變量、常量、構(gòu)造方法、一般方法、抽象方法;接口有且只能有常量和抽象方法。(2)關(guān)
22、系特點(diǎn):類與類支持單繼承,不能多繼承,但是能夠多層次繼承,類與接口是實(shí)現(xiàn)關(guān)系,一個(gè)類能實(shí)現(xiàn)多個(gè)接口,一個(gè)類繼承一個(gè)類的同時(shí)能實(shí)現(xiàn)多個(gè)接口;接口與接口之間能單繼承,也能多繼承;(3)設(shè)計(jì)理念:抽象類定義的是該繼承體系的共性功能,是is a的關(guān)系。接口定義的是該體系的拓展功能,是like a的關(guān)系。71.接口的思想特點(diǎn)?(1)對外暴露的規(guī)則(2)接口是程序?qū)ν獾墓δ芡卣梗?)接口是用來多實(shí)現(xiàn)的(4)接口的出現(xiàn)降低了類與類之間的耦合性。72什么是內(nèi)部類,特點(diǎn)是什么?答:在類中定義的類就是內(nèi)部類。特點(diǎn)(1)能夠直接訪問所在類的成員,包括私有的。(2)外部類訪問內(nèi)部類需要創(chuàng)建內(nèi)部類的對象。73.成員內(nèi)部
23、類是什么?答:成員內(nèi)部類是定義在成員位置的類。能夠被私有、靜態(tài)修飾。74內(nèi)部類的方法如何訪問局部變量,內(nèi)部類的成員變量,外部類的成員變量?答:局部變量可以直接訪問;內(nèi)部類的成員變量this. ;外部類的成員變量:外部類名.this.75.局部內(nèi)部類訪問的局部變量為什么要用final修飾?答:因?yàn)楫?dāng)調(diào)用這個(gè)方法時(shí),局部變量如果沒有用final修飾,他的生命周期和方法的生命周期是一樣的,當(dāng)方法彈棧,這個(gè)局部變量也會消失,那么如果局部內(nèi)部類對象還沒有馬上消失想用這個(gè)局部變量,就沒有了,如果用final修飾會在類加載的時(shí)候進(jìn)入常量池,即使方法彈棧,常量池的常量還在,也可以繼續(xù)使用。但是JDK1.8以后
24、取消了這個(gè)特性,會默認(rèn)加上final的。76什么是匿名內(nèi)部類?答:匿名內(nèi)部類就是沒有名字的內(nèi)部類,是內(nèi)部類的簡化形式。匿名內(nèi)部類必須繼承或?qū)崿F(xiàn)一個(gè)接口,在使用的時(shí)候直接用父類的名字創(chuàng)建一個(gè)子類對象并實(shí)現(xiàn)其中的方法,匿名內(nèi)部類的實(shí)質(zhì)是一個(gè)繼承了該類或者實(shí)現(xiàn)該接口的匿名的子類對象。前提:必須繼承一個(gè)類或?qū)崿F(xiàn)一個(gè)接口。規(guī)則:(1)不能是抽象的,因?yàn)樗谋举|(zhì)是一個(gè)子類對象。(2)不能定義構(gòu)造方法,因?yàn)闆]有類名。使用:(1)當(dāng)接口中的只有一個(gè)抽象方法時(shí),并對方法調(diào)用一次的時(shí)候(2)傳遞參數(shù)的時(shí)候,如果參數(shù)是接口或抽象類,其實(shí)需要的就是實(shí)現(xiàn)類對象或者子類對象,這個(gè)時(shí)候使用匿名內(nèi)部類。77、匿名對象何時(shí)使用
25、?答:(1)當(dāng)對對象方法調(diào)用一次的時(shí)候(2)可以作為實(shí)際參數(shù)進(jìn)行傳遞。78適配器模式?當(dāng)一個(gè)接口有多個(gè)抽象方法時(shí),而我們只使用其中的一個(gè)或兩個(gè)方法時(shí),每次使用的時(shí)候我們都要重寫這些方法,比較麻煩。我們可以定義一個(gè)類去實(shí)現(xiàn)這個(gè)接口,并重寫里面的方法,只是方法體為空,并把這個(gè)類定義為抽象類,我們使用的時(shí)候繼承這個(gè)類重寫需要的方法就就可以了。79.四種權(quán)限修飾符的比較?答:public的權(quán)限最大,同一類中,同一個(gè)包中,不同包中(子類),不同包中(無關(guān)類)都可以訪問。 給大家使用Protected同一類中,同一個(gè)包中,不同包中(子類),可以訪問。強(qiáng)調(diào)的是子類默認(rèn) 同一類中,同一個(gè)包中 可以訪問。 強(qiáng)調(diào)
26、的是同一個(gè)包Private 同一類中訪問。 強(qiáng)調(diào)的是自己80.package在第一行,只能有一個(gè);然后是import導(dǎo)包;最后是class。81.代碼塊的分類:局部代碼塊:讓變量盡早的消失,節(jié)約資源,提高效率。構(gòu)造代碼塊:用于給對象初始化;靜態(tài)代碼塊兒:給類進(jìn)行初始化,用于加載驅(qū)動。同步代碼塊:為了防止CPU高速切換出現(xiàn)安全問題。三、API81.=和equals的區(qū)別?答:“=”是比較運(yùn)算符,既能比較基本數(shù)據(jù)類型,又能比較引用數(shù)據(jù)類型?;緮?shù)據(jù)類型比較的是數(shù)值,引用數(shù)據(jù)類型比較的是地址值。equals是一個(gè)方法,只能比較引用數(shù)據(jù)類型。所有的類都會繼承Object的equals方法。重寫equa
27、ls方法比較的是對象的內(nèi)容,如果沒有重寫將調(diào)研Object的equals方法,比較的是地址值。82.String str = null 和String str = “”的區(qū)別?答:String str = null只是聲明了引用,但是沒有創(chuàng)建對象,沒有為其開辟空間,不能操作方法。String = “”是創(chuàng)建了一個(gè)長度為0的字符串,并在內(nèi)存中分配了空間。83String s1= “abc”, String s2= new String(“abc”),s1=s2結(jié)果是什么?s1.equals(s2)結(jié)果是什么?答:s1=s2結(jié)果為false。s1指向的常量池中的對象,s2指向的是堆內(nèi)存中的對象,兩
28、者的地址值不同。s1.equals(s2)結(jié)果是true。String重寫了equals方法,比較的是內(nèi)容。84.String,StringBuffer、StringBuilder的區(qū)別?答: String是一個(gè)特殊的引用數(shù)據(jù)類型,是一個(gè)長度不可變的字符序列,沒有緩沖區(qū),一旦創(chuàng)建就不會發(fā)生變化了。即使重新賦值不是在原來對象的基礎(chǔ)上改變的,而是創(chuàng)建了一個(gè)新的對象,將引用指向這個(gè)新的對象,浪費(fèi)空間,效率比較低。StringBuffer、StringBuilder是容器,是可變的字符串序列。StringBuffer是JDK1.0版本的,線程是安全的,效率比較低。StringBuilder是JDK1.
29、5出現(xiàn)的,線程不安全,效率高。85.StringBuilder的底層是什么?答:底層是字符數(shù)組,原始長度為16。通過append添加元素的時(shí)候,會自動擴(kuò)容,擴(kuò)容規(guī)則:大字符串的長度= 小數(shù)組長度*2+2.86.為什么出現(xiàn)基本數(shù)據(jù)類型包裝類?答:將基本數(shù)據(jù)類型封裝為對象的好處能在對象中封裝更多的功能操作數(shù)據(jù)。87.String 和int直接的轉(zhuǎn)換?答:將int類型轉(zhuǎn)為String類型的方法:(1)基本數(shù)據(jù)類型+“”(2)Integer.toString(int num)(3)String.valueOf(int i)將String轉(zhuǎn)為int:Integer.parseInt(String s)8
30、8.基本數(shù)據(jù)類型包裝類的自動拆裝箱是什么?答:是JDK1.5版本出現(xiàn)的新特性,自動裝箱就是把基本數(shù)據(jù)類型轉(zhuǎn)為為包裝類型。拆箱就是把包裝類轉(zhuǎn)換為基本數(shù)據(jù)類型。89.Object類中的常見方法有哪些?答:hashCode():返回值是int,是該對象的哈?,斨?。equals():返回值是boolean,比較的是地址值。toString():返回該對象的字符串表現(xiàn)形式。getClass():返回值類型是Class。返回的是創(chuàng)建該對象所屬類對應(yīng)的字節(jié)碼文件。這些方法都需要對象調(diào)用,在開發(fā)的過程中要重寫。地址值的組成:類名十六進(jìn)制的哈希值。90.獲取當(dāng)前時(shí)間毫秒值有哪幾種方式?答:(1)new Date
31、().getTime();(2)System. currentTimeMillis()(3)Calendar.getInstance().getTimeInMillis()91.正則表達(dá)式常用的;d 數(shù)字:0-9 w 單詞字符:a-zA-Z_0-9 (X)表示分組1表示和前面的相同. 任何字符X? ,一次或一次也沒有 X* ,零次或多次 X+ ,一次或多次 Xn ,恰好 n 次 Xn, ,至少 n 次 Xn,m ,至少 n 次,但是不超過 m 次92.日歷類和日期類相互轉(zhuǎn)換:Calendar c = Calendar.getInstance(); c.setTime(date); c.getT
32、ime()93.Date和String類型的轉(zhuǎn)換?Date類型轉(zhuǎn)為String 是格式化:formatString轉(zhuǎn)Date是解析;parse三、集合94.簡述集合體系?答:集合分為單列集合和雙列集合。單列集合的頂層是Collection接口,包括List和Set集合。(1.1)List集合的特點(diǎn)是元素可重復(fù),有序,有索引,能夠有角標(biāo)操作集合,有特有的迭代方式ListIterator。包括ArrayList、LinkedList和Vector。ArrayList集合底層采用的是數(shù)組數(shù)據(jù)結(jié)構(gòu),查詢速度比較快,因?yàn)閿?shù)組有索引,在內(nèi)存中分配的空間是連續(xù)的,但是增刪比較慢。線程不同步,效率高。初始容量
33、為10。LinkedList集合的底層采用的是鏈表數(shù)據(jù)結(jié)構(gòu),增刪速度比較快,查詢速度比較慢。線程不同步。Vector底層數(shù)據(jù)結(jié)構(gòu)也是數(shù)組數(shù)據(jù)結(jié)構(gòu),但是線程同步,效率低,特有取出元素的方式是枚舉。因?yàn)樾实?,逐步被ArrayList替代。(1.2) Set集合的特點(diǎn)元素是無序的(存入和取出的順序不一致),元素不可以重復(fù)。包括HashSet和TreeSet。HashSet的底層數(shù)據(jù)結(jié)構(gòu)是哈希表,線程不同步,效率高。保證元素的唯一性額有的依據(jù)是元素的hashCode和equals方法。如果hashCode不同,不調(diào)用equals方法。如果hashCode相同,才會調(diào)用equals方法判斷元素是否相同
34、。TreeSet的底層數(shù)據(jù)結(jié)構(gòu)是二叉樹,線程不同步,效率高。能夠給元素進(jìn)行排序。保證元素唯一性的依據(jù)是compareTo和return0。排序的兩種方式:第一種元素自身實(shí)現(xiàn)Comparable接口,重寫compareTo()方法。這種排序方式叫元素的自熱排序,也叫默認(rèn)排序。第二種是當(dāng)元素自身不具備比較性或者具備的比較性不是所需要的,這時(shí)就讓集合自身具備比較性,當(dāng)集合初始化時(shí)就有了比較性。定義一個(gè)比較器實(shí)現(xiàn)Comparator接口,重寫compare方法,定義集合的時(shí)候?qū)⒈容^器作為參數(shù)傳遞給TreeSet的構(gòu)造函數(shù),這樣集合就具有了比較性。(2)Map是雙列集合的頂層接口,該集合存儲的是鍵值對,
35、一對一對的往里存,而且要保證鍵的唯一性。包括Hashtable、HashMap、TreeMap。Hashtable的底層數(shù)據(jù)結(jié)構(gòu)是哈希表,不可以存儲null鍵和null值,線程同步,效率低。JDK1.0.HashMap的底層數(shù)據(jù)結(jié)構(gòu)是哈希表,可以存儲null鍵和null值,線程不同步,將Hashtable替代,JDK1.2效率高。保證鍵的唯一性的 依據(jù)是hashCode和equals方法。TreeMap的底層數(shù)據(jù)結(jié)構(gòu)是二叉樹,線程不安全,能夠給集合中的鍵排序。95.什么時(shí)候使用什么集合?答:(1)首先要看是單列還是雙列,是單列的話就用Collection,雙列就用Map。(2)要是單列的話看元
36、素是不是要求重復(fù),元素重復(fù)的話使用List,看查詢多還是增刪多,查詢多的話用ArrayList,增刪多的話用LinkedList,不確定的話用ArrayList。不重復(fù)的話使用Set,看是否要求排序,排序的話用TreeSet,不需要排序用HashSet。不確定的話用HashSet。(3)要是雙列的話,看是否要求排序,要求排序用TreeMap,不要求排序用HashMap,不確定的話用HashMap。96.Collection(單列)和(Map)雙列的區(qū)別?答:Collection是單列集合,Map是雙列集合。Map的鍵是唯一的,Collection體系中的Set集合中的元素是唯一的。Map集合的
37、數(shù)據(jù)結(jié)構(gòu)針對鍵有效,Collection的底層數(shù)據(jù)結(jié)構(gòu)針對元素有效。100.遍歷集合的方式有哪些?答:遍歷List集合的方式有普通for、增強(qiáng)for、迭代器Iterator、列表迭代器ListIterator。遍歷Set集合的方式有增強(qiáng)for、迭代器Iterator。遍歷map集合的方式有keySet(),entrySet()。然后通過增強(qiáng)for、迭代器Iterator遍歷。101.用迭代器和增強(qiáng)for遍歷集合,能否用集合的方法操作集合?答:不能,會出現(xiàn)并發(fā)修改異常,ConcurrentModificationException。并發(fā)修改異常就是在用普通迭代器的時(shí)候用集合的方法增加、刪除元素。
38、可以用列表迭代器。102.泛型是什么?有什么好處?答:簡單的說一種標(biāo)簽,不確定的類型,用戶使用的時(shí)候確定類型,是JDK1.5出現(xiàn)的新特性,用于解決安全問題,是一種類型安全機(jī)制。好處:(1)將運(yùn)行時(shí)期會可能出現(xiàn)的異常轉(zhuǎn)移到編譯期(2)提高了安全性。(3)避免了強(qiáng)制類型轉(zhuǎn)換的麻煩。103、上限和下限? super E: E、E的父類,固定下邊界。? extends E: E、E的子類 固定的上邊界。104.字典排序,自然排序和比較器排序是什么?答:字典排序按照字典上的順序排序。 自然排序是對強(qiáng)制對實(shí)現(xiàn)Comparable接口的類進(jìn)行排序,實(shí)現(xiàn)Comparable接口,重寫compareTo()方法
39、,根據(jù)返回值進(jìn)行排序。比較器排序是實(shí)現(xiàn)Comparator方法,重寫compare()方法,根據(jù)返回值進(jìn)行排序。105.TreeSet的兩種排序方式有什么區(qū)別?答:TreeSet的構(gòu)造方法中不傳參數(shù),會按照類的Comparable排序,沒有的話就會報(bào)錯。TreeSet傳入比較器,會按照比較器排序。106.Map有哪些取出元素的方式?原理是什么?答:keySet():將Map集合中的鍵取出放在Set集合,然后通過遍歷Set集合取出里面的鍵,再用map的get(key)方法取出對應(yīng)的值。entrySet()將Map集合中的鍵值對關(guān)系取出放在Set集合,然后通過遍歷Set集合取出里面的鍵值對關(guān)系,然
40、后通過entry的getKey()和getValue()方法取出元素。107.Collections 和 collection的區(qū)別? 108:*棧和隊(duì)列:隊(duì)列結(jié)構(gòu):先進(jìn)先出的規(guī)則棧結(jié)構(gòu):先進(jìn)后出規(guī)則*鏈表和數(shù)組的區(qū)別:數(shù)組:一塊連續(xù)的存儲區(qū)域鏈表結(jié)構(gòu):每個(gè)元素指向下一個(gè)元素四、異常109.異常體系概述?答:Throwable類|-Error:無法通過處理解決的錯誤|-Exception:|-編譯時(shí)異常:就是在編譯程序生成.class文件時(shí)產(chǎn)生的異常,這種異常必須處理,要么拋出,要么捕獲,否則編譯無法通過|-運(yùn)行時(shí)異常:編譯時(shí)期不會出現(xiàn),只有在運(yùn)行時(shí)才產(chǎn)生,這種異常,可以處理,也可以不處理,可
41、以聲明,也可以不聲明110.異常處理有哪些方式?答(1)捕獲處理trycatch trycatchfinally tryfinally(2)聲明拋出111.運(yùn)行異常和編譯異常的區(qū)別?答:所有的RumtimeException類及其子類的實(shí)例是運(yùn)行異常,其他異常時(shí)編譯異常。編譯異常必須顯式處理,否則會編譯失敗。運(yùn)行時(shí)異??梢圆惶幚?,可以通過編譯。112.throw和throws的區(qū)別?答:throws是在方法聲明后面,用來聲明異常,后面跟的異常類名;可以跟多個(gè)異常類名,用逗號隔開;表示拋出異常,需要由調(diào)用者處理。Throw定義在方法體內(nèi),跟的異常對象名;只能跟一個(gè)異常對象。113.子父類間異常的
42、注意事項(xiàng)?答:(1)子類繼承父類時(shí),父類方法拋出了異常,子類重寫該方法時(shí)只能拋出相同的異?;蛘咴摦惓5淖宇悺#?)如果父類拋出了多個(gè)異常,子類在重寫方法時(shí)只能拋出相同的異?;蛘咚淖蛹荒軖伋龈割悰]有的異常。(3)如果父類沒有拋出異常,子類重寫該方法時(shí)不能拋出異常。如果子類出現(xiàn)了異常,只能進(jìn)行try處理,不能拋出。114.異常處理的注意事項(xiàng):(1) 子類不能出現(xiàn)父類沒有的異常(2) 如果父類沒有拋出異常,子類重寫該方法時(shí)不能拋出異常。如果子類出現(xiàn)了異常,只能進(jìn)行try處理,不能拋出。(3) 功能內(nèi)部如果出現(xiàn)異常,如果內(nèi)部可以處理,就用try。如果功能內(nèi)部處理不了,就必須聲明出來,讓調(diào)用者處理
43、。116.JVM是如何處理異常的?先自己處理,處理不了交給調(diào)用者處理。五、IO117.遞歸的注意事項(xiàng)?答:1.遞歸必須要有出口,否則是死遞歸,造成棧內(nèi)存溢出。2.遞歸不能多層次調(diào)用,否則會造成棧內(nèi)存溢出。3.構(gòu)造方法不能遞歸調(diào)用。117.路徑的分類?答:分為相對路徑和絕對路徑。絕對路徑是相對盤符而言的;相對路徑相對的是工程。118.集合的頂層是什么?IO的頂層是什么?答:集合的頂層是接口。IO的頂層的是抽象類。119.什么IO流?用來在硬盤和內(nèi)存直接交換數(shù)據(jù)的。120:簡述IO的分類?答:按照流向分輸入流和輸出流。按照操作分為字節(jié)流和子字符流。字節(jié)流能操作任意類型的文件,如果操作文本,可能會出
44、現(xiàn)亂碼。分為字節(jié)輸出流和字節(jié)輸入流。字符流只能操作純文本文件,分為字符輸入流和字符輸出流。121.為什么read()方法返回值是int類型?答:為了防止中間出現(xiàn)11111111(-1的反碼)這樣的數(shù)據(jù),后面的內(nèi)容就讀不到了。122.字符流通往字節(jié)流的橋梁是什么?字節(jié)流通往字符的橋梁是什么?答:字符流通往字節(jié)流的橋梁是OutputStreamWriter;字節(jié)流通往字符流的橋梁是InputstreamReader。123.標(biāo)準(zhǔn)輸入流和輸出流是什么?答:標(biāo)準(zhǔn)輸入流的是System.in。標(biāo)準(zhǔn)輸出流是System.out.124.高效字符流的方法?ReadLine()讀不到rnnewline()針對
45、當(dāng)前操作系統(tǒng)換行125.字節(jié)輸入流read()一次讀取的一個(gè)字節(jié),返回的字節(jié)的對應(yīng)的ASCII值。126.字符緩沖流和字節(jié)緩沖流的緩沖區(qū)的默認(rèn)大小是多少?答:字符緩沖流緩沖區(qū)默認(rèn)的大小是8192個(gè)字符,16kb。字節(jié)緩沖流緩沖區(qū)默認(rèn)的大小是8192個(gè)字節(jié),8kb。Writer的2kb。127.close()和flush()的區(qū)別:答:flush()方法是來刷新緩沖區(qū)的,刷新之后還可以再次寫出。Close()是用來關(guān)閉流釋放資源的,如果是帶緩沖區(qū)的流對象關(guān)閉流之前還會刷新緩沖區(qū),關(guān)閉之后無法寫出。六、網(wǎng)絡(luò)編程128.什么是網(wǎng)絡(luò)編程?答:網(wǎng)絡(luò)編程又叫套接字編程,Socket編程,就是用來實(shí)現(xiàn)網(wǎng)絡(luò)互
46、連的不同計(jì)算機(jī)上運(yùn)行程序之間可以進(jìn)行數(shù)據(jù)的交換。大白話來講:就是用java語言來實(shí)現(xiàn)網(wǎng)絡(luò)上不同計(jì)算機(jī)的通信。129.網(wǎng)絡(luò)編程的三要素?答:IP地址、端口、協(xié)議。IP的組成網(wǎng)關(guān)和主機(jī)地址。127.0.0.1回環(huán)地址 255.255.255.255廣播地址130.端口的范圍是什么?哪個(gè)范圍的端口不能用,為什么?答:端口的范圍是065535. 01024這個(gè)范圍的端口不能使用,因?yàn)橐呀?jīng)被系統(tǒng)占用或者作為保留端口。131.TCP和UDP協(xié)議的區(qū)別?答:TCP是面向有連接的,三次握手機(jī)制;傳輸?shù)臄?shù)據(jù)無大小限制;安全(可靠)協(xié)議;效率低;區(qū)分客戶端和服務(wù)器。UDP是面向無連接的,發(fā)送的數(shù)據(jù)是通過數(shù)據(jù)報(bào)包的
47、形式,不超過64k;不安全(可靠)協(xié)議,效率高;不區(qū)分客戶端和服務(wù)器。(叫發(fā)送端和接收端)132.Socket通信的原理是是什么?答:通信的兩端都有獨(dú)有的Socket,Socket通信就是使用TCP或者UDP協(xié)議通過IO流在兩個(gè)Socket間進(jìn)行通信。七、多線程133.進(jìn)程和線程?進(jìn)程是一個(gè)正在執(zhí)行中的程序,每一個(gè)程序都至少有一個(gè)執(zhí)行順序,該順序是一個(gè)路徑,或者叫一個(gè)控制單元。線程是進(jìn)程中的一個(gè)獨(dú)立的控制單元,線程在控制著進(jìn)程的執(zhí)行,是進(jìn)程的執(zhí)行路徑。進(jìn)程:正在運(yùn)行的程序線程:進(jìn)程的執(zhí)行單元,執(zhí)行路徑。多線程:進(jìn)程有多條執(zhí)行路徑,每個(gè)執(zhí)行路徑就是線程。134.多線程并發(fā)和多線程并行是什么呢?答
48、:兩個(gè)或者多個(gè)任務(wù)發(fā)送請求時(shí),CPU只能執(zhí)行一個(gè),就會安排這些任務(wù)交替執(zhí)行,由于CPU做著高速的切換,間隔的時(shí)間比較短,我們看起來像同時(shí)執(zhí)行的,這就是多線程并發(fā)。并行是兩個(gè)或多個(gè)任務(wù)同時(shí)執(zhí)行,前提是多核CPU。135.多線程的執(zhí)行原理?答: CPU在做著高速的切換。136. 線程的執(zhí)行具有隨機(jī)性和延遲性。137.線程的默認(rèn)命名規(guī)則?答:Thread-編號,編號是從0開始的。138.線程的優(yōu)先級的范圍是多少?默認(rèn)的優(yōu)先級是?答:線程的優(yōu)先級范圍是110。默認(rèn)的優(yōu)先級是5.139.Java程序的啟動原理?答:JVM啟動一個(gè)主線程,再由主線程調(diào)用某個(gè)類的main方法。140.Java程序是多線程的嗎
49、?答:是的,至少開啟了一個(gè)主線程和負(fù)責(zé)垃圾回收的線程。141.線程的優(yōu)先級越高,代表這個(gè)線程一定是第一個(gè)執(zhí)行的嗎?答:不是的,線程的優(yōu)先級越高代表著在一定程度上讓該線程獲取更多的執(zhí)行機(jī)會。142.線程的兩種實(shí)現(xiàn) 方式的區(qū)別?答:繼承Thread類:好處是:因?yàn)槭抢^承,代碼簡單,能夠直接使用Thread類的方法。確定是:擴(kuò)展性比較差,因?yàn)槔^承了Thread類,不能再繼承其他的類。實(shí)現(xiàn)Runnable接口:好處是擴(kuò)展性比較強(qiáng)。缺點(diǎn)時(shí):代碼比較冗余,因?yàn)椴皇抢^承Thread類,無法直接使用thread中的方法。143.同步代碼塊和同步方法的鎖是誰?答;同步代碼塊的鎖可以是任意類型的對象;非靜態(tài)同步方
50、法的鎖是this;靜態(tài)方法的鎖是該類的字節(jié)碼文件。144.實(shí)現(xiàn)Runnable和Callable的區(qū)別?答:實(shí)現(xiàn)Runnable接口的run方法沒有返回值,不能拋異常;而實(shí)現(xiàn)Callable接口的call方法可以拋異常,有返回值。Runnable接口的實(shí)現(xiàn)類對象既可以作為參數(shù)傳遞給Thread的構(gòu)造方法,也可以用線程池submit的參數(shù);Callable接口的實(shí)現(xiàn)類對象只適應(yīng)于線程池。145.線程的生命周期(線程的五種狀態(tài))是什么?答:新建、就緒、運(yùn)行(運(yùn)行的時(shí)候可能阻塞)、死亡。線程的六種狀態(tài):新建、就緒、運(yùn)行(運(yùn)行的時(shí)候可能阻塞或者等待)、死亡。146.sleep和wait的區(qū)別?答:(1)sleep是讓線程睡眠,必須給相應(yīng)的睡眠時(shí)間,不需要喚醒,時(shí)間到了會自動醒來,休眠時(shí)不放棄Cpu的執(zhí)行權(quán)。(2)wait的是讓線程等待,可以傳參也可以不傳參,傳參是在指定的時(shí)間后等待,需要被喚醒。等待的時(shí)候放棄cpu的執(zhí)行權(quán)。147.什么時(shí)候會出現(xiàn)安全性?多線程,并發(fā),操作同一數(shù)據(jù)。148.為什么wait()和notify()定義在Object中?答:因?yàn)殒i對象可以是任意類型的對象。149.什么情況下需要同步?當(dāng)多線
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44941-2024植物照明術(shù)語
- 2025版第四編合同法合同擔(dān)保業(yè)務(wù)風(fēng)險(xiǎn)防范與法律解讀3篇
- 2025年度緊急口譯響應(yīng)及協(xié)調(diào)服務(wù)合同3篇
- 噪音污染紅線管理辦法
- 采銅礦工程文明施工合同
- 石油天然氣行業(yè)人員信息管理規(guī)章
- 實(shí)驗(yàn)室危險(xiǎn)品使用與儲存規(guī)定
- 連鎖店管理錦囊員工培訓(xùn)
- 咖啡公司稅務(wù)管理要點(diǎn)
- 配送責(zé)任協(xié)議
- 特色農(nóng)產(chǎn)品超市方案
- 2024國有企業(yè)與民營企業(yè)之間的混合所有制改革合同
- 二次函數(shù)的幾何性質(zhì)(于特)(1)名師公開課獲獎?wù)n件百校聯(lián)賽一等獎?wù)n件
- GB/T 30595-2024建筑保溫用擠塑聚苯板(XPS)系統(tǒng)材料
- 2024年人教版八年級地理上冊期末考試卷(附答案)
- 醫(yī)學(xué)免疫學(xué)-醫(yī)學(xué)檢驗(yàn)專業(yè)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 《稻草人》閱讀題及答案
- 獨(dú)立基礎(chǔ)土方開挖施工方案
- (建筑工程管理)常熟市建設(shè)工程施工圖審查工作
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) X2-10-07-17 陶瓷產(chǎn)品設(shè)計(jì)師(試行)勞社廳發(fā)200633號
- 瑜伽基礎(chǔ)知識題庫單選題100道及答案解析
評論
0/150
提交評論