




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一、填空題1 Java中一個(gè)類可以有 一 個(gè)父類。2 如果一個(gè)類的聲明中沒有使用extends關(guān)鍵字,這個(gè)類被系統(tǒng)默認(rèn)為是 Object 類的子類。3 子類自然地繼承了其父類中不是 private 的成員變量作為自己的成員變量。4 當(dāng)子類中定義的成員變量和父類中的成員變量同名時(shí),子類的成員變量 隱藏 了父類的成員變量。5 子類通過(guò)成員變量的隱藏和方法的 重寫 可以把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為。6 對(duì)于重寫或繼承的方法,Java運(yùn)行時(shí)系統(tǒng)根據(jù)調(diào)用方法的 實(shí)例 的類型來(lái)選擇調(diào)用哪個(gè)方法。7 對(duì)于子類創(chuàng)建的一個(gè)對(duì)象,如果子類重寫了父類的方法,則運(yùn)行時(shí)系統(tǒng)調(diào)用 子類 的方法。8 對(duì)于子類創(chuàng)
2、建的一個(gè)對(duì)象,如果子類繼承了父類的方法,未重寫,則運(yùn)行時(shí)調(diào)用_父類_的方法。9 在Java語(yǔ)言中多態(tài)性體現(xiàn)在由方法重載實(shí)現(xiàn)的靜態(tài)多態(tài)性和 重寫 實(shí)現(xiàn)的動(dòng)態(tài)多態(tài)性。10 final 類不能被繼承,即不能有子類。11 abstract 類不能創(chuàng)建對(duì)象,必須產(chǎn)生其子類,由子類創(chuàng)建對(duì)象。12 如果一個(gè)方法被修飾為 final 方法,則這個(gè)方法不能被重寫。13 對(duì)于 abstract 方法,只允許聲明,而不允許實(shí)現(xiàn)。14 如果一個(gè)方法被修飾為final方法,則這個(gè)方法不能 被重寫 。15 如果一個(gè)類是一個(gè)abstract類的子類,它必須具體實(shí)現(xiàn) 父類 的abstract方法。16 局部變量的名字與成員變
3、量的名字相同,若想在該方法內(nèi)使用成員變量,必須使用關(guān)鍵字 this 。17 在關(guān)鍵字中能代表當(dāng)前類或?qū)ο蟊旧淼氖?this 。18 如果在子類中想使用被子類隱藏的父類的成員變量或方法可以使用關(guān)鍵字 super 。19 子類如果想用父類的構(gòu)造方法,必須在子類的構(gòu)造方法中使用,并且必須使用關(guān)鍵字 _super 來(lái)表示。20 如果在子類中想使用被子類隱藏了的父類成員變量或方法就可以使用關(guān)鍵字 super 。21 Java中為了克服 單繼承 的缺點(diǎn),使用了接口,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。22 接口 就是方法定義和常量值的集合。23 使用關(guān)鍵字 interface 來(lái)定義接口。24 接口定義包括接口的聲明
4、和 接口體 。25 一個(gè)類通過(guò)使用關(guān)鍵字 implements 聲明自己實(shí)現(xiàn)一個(gè)或多個(gè)接口。26 如果一個(gè)類實(shí)現(xiàn)了某個(gè)接口,那么這個(gè)類必須實(shí)現(xiàn)該接口的 所有方法 。27 接口中的方法被默認(rèn)的訪問(wèn)權(quán)限是 public 。28 接口的定義包括 接口的聲明 和接口體。29 定義接口時(shí),接口體中只進(jìn)行方法的聲明,不允許提供方法的 具體實(shí)現(xiàn) 。30 如果接口中的方法的返回類型不是void的,那么在類中實(shí)現(xiàn)該接口的方法時(shí),方法體至少要有一個(gè) return 語(yǔ)句。31 內(nèi)部類 指那些類定義代碼被置于其他類定義中的類。32 泛型 是Java SE5.0的新特性。33 創(chuàng)建對(duì)象常用的方法就是使用 new 運(yùn)算符
5、和類的構(gòu)造方法。34 把Java應(yīng)用程序中涉及到的類壓縮成一個(gè) jar 文件。35 數(shù)組 是相同類型的數(shù)據(jù)按順序組成的一種引用數(shù)據(jù)類型。36 Java中定義數(shù)組后通過(guò) 數(shù)組名 加數(shù)組下標(biāo),來(lái)使用數(shù)組中的數(shù)據(jù)。37 Java中聲明數(shù)組包括數(shù)組的名字、數(shù)組包含的元素的 數(shù)據(jù)類型 。38 聲明數(shù)組 僅僅是給出了數(shù)組名字和元素的數(shù)據(jù)類型,要想真正的使用數(shù)組還必須為它分配內(nèi)存空間。39 一維數(shù)組通過(guò)下標(biāo)符訪問(wèn)自己的元素,需要注意的是下標(biāo)從 0 開始。40 創(chuàng)建數(shù)組后,系統(tǒng)會(huì)給每一個(gè)數(shù)組元素一個(gè)默認(rèn)的值,如float型是 0 。41 聲明數(shù)組僅僅是給出了數(shù)組名字和元素的數(shù)據(jù)類型,要想真正地使用數(shù)組還必須為
6、它 分配內(nèi)存空間 。42 數(shù)組聲明后,必須使用 new 運(yùn)算符分配內(nèi)存空間。43 Java中使用java.lang包中的 String 類來(lái)創(chuàng)建一個(gè)字符串變量,因此字符串變量是類類型變量,是一個(gè)對(duì)象。44 創(chuàng)建一個(gè)字符串時(shí),使用String類的 構(gòu)造方法 。45 String 類是不可變類,對(duì)象所包含的字符串內(nèi)容永遠(yuǎn)不會(huì)被改變。46 StringBuffer 類是可變類,對(duì)象所包含的字符串內(nèi)容可以被添加或修改。47 使用String類的 length() 方法可以獲取一個(gè)字符串的長(zhǎng)度。48 可以使用String類的 startWith(String s) 方法判斷一個(gè)字符串的前綴是否是字符串s
7、。49 可以使用String類的 endsWith(String s) 方法判斷一個(gè)字符串的后綴是否是字符串s。50 可以使用String類的 equals(String s) 方法比較一字符串是否與字符串s相同。51 字符串調(diào)用 indexOf(String s) 方法從當(dāng)前字符串的頭開始檢索字符串s,并返回首次出現(xiàn)s 的位置。52 字符串調(diào)用indexOf方法檢索字符串s,并返回首次出現(xiàn)s 的位置。如果沒有檢索到字符串s,該方法返回的值是 +1 。53 一個(gè)字符串s 通過(guò)調(diào)用方法 trim() 得到一個(gè)字符串對(duì)象,該字符串對(duì)象是s 去掉前后空格后的字符串。54 java.lang 包中的I
8、nteger 類調(diào)用其類方法: parseInt 可以將“數(shù)字”格式的字符串,如“2387”,轉(zhuǎn)化為int 型數(shù)據(jù)。55 可以使用java.lang包中的 Integer 類將形如“2387”的字符串轉(zhuǎn)化為int型數(shù)據(jù)。56 可以使用java.lang包中的 Long 類將字符串轉(zhuǎn)化為long型數(shù)據(jù)。57 可以使用String類直接調(diào)用 valueOf 方法將數(shù)值轉(zhuǎn)化為字符串。58 StringBuffer類調(diào)用方法, toString() 返回緩沖區(qū)內(nèi)的字符串。59 Object類有一個(gè)public方法是 toString() ,一個(gè)對(duì)象通過(guò)調(diào)用該方法可以獲得該對(duì)象的字符串表示。60 Obj
9、ect 類是所有Java 類的最終祖先,如果一個(gè)類在聲明時(shí)沒有包含extends 關(guān)鍵詞,那么這個(gè)類直接繼承Object類。61 對(duì)于一個(gè)已經(jīng)不被任何引用變量引用的對(duì)象,當(dāng)垃圾回收器準(zhǔn)備回收該對(duì)象所占用的內(nèi)存時(shí),將自動(dòng)調(diào)用該對(duì)象的 finalize() 方法。62 每個(gè)Java 基本類型在java.lang 包中都有一個(gè)相應(yīng)的 包裝 類,把基本類型數(shù)據(jù)轉(zhuǎn)換為對(duì)象。63 在Java 集合中不能存放基本類型數(shù)據(jù),如果要存放數(shù)字,應(yīng)該使用 包裝類型 。64 Character 類和Boolean 類直接繼承Object 類,除此以外,其他包裝類都是 java.Number 的直接子類。65 包裝類都
10、覆蓋了Object 類的 toString() 方法,以字符串的形式返回包裝對(duì)象所表示的基本類型數(shù)據(jù)。66 所有的包裝類都是final 類型,因此不能創(chuàng)建它們的 子類 。67 Math 類提供了許多用于數(shù)學(xué)運(yùn)算的靜態(tài)方法。68 Math 類是 final 類型的,因此不能有子類。69 Random 類提供了一系列用于生成隨機(jī)數(shù)的方法。70 Date 類以毫秒數(shù)來(lái)表示特定的日期。71 java.text.DateFormat 抽象類用于定制日期的格式, 它有一個(gè)具體子類為 SimpleDateFormat 。72 FBigDecimal 類能夠進(jìn)行浮點(diǎn)數(shù)的精確加法、減法和乘法運(yùn)算,對(duì)于浮點(diǎn)數(shù)的除
11、法運(yùn)算,可以滿足用戶指定的精度。73 異常處理 方法是一種非常有用的輔助性程序設(shè)計(jì)方法。采用這種方法可以使得在程序設(shè)計(jì)時(shí)將程序的正常流程與錯(cuò)誤處理分開,有利于代碼的編寫和維護(hù)。74 按異常在編譯時(shí)是否被檢測(cè)來(lái)分,異??梢苑譃閮纱箢悾菏軝z異常與 非受檢異常 。75 程序可以處理的異常對(duì)應(yīng)的類是 Exception 及其子類。76 拋出異??梢岳?try catch 語(yǔ)句。77 處理異常的方式有兩種: 捕獲異常 方式與轉(zhuǎn)移異常方式。78 捕捉異常方式是通過(guò) try catch 結(jié)構(gòu)處理異常。79 在try-catch-finally 結(jié)構(gòu)中, finally 語(yǔ)句塊一般總是會(huì)被執(zhí)行,不管有沒有異
12、常產(chǎn)生。80 異常處理流程中,其中 try 代碼塊包含了可能發(fā)生異常的程序代碼。81 異常處理流程中,其中 catch 代碼快緊跟在try 代碼塊后面,用來(lái)捕獲并處理異常。82 異常處理流程中,其中 finally 代碼塊用于釋放被占用的相關(guān)資源。83 對(duì)于程序中可能出現(xiàn)的受檢查異常,要么用trycatch 語(yǔ)句捕獲并處理它,要么用 _throw_語(yǔ)句拋出它,Java 編譯器會(huì)對(duì)此做檢查。二、問(wèn)題題1、用代碼表示A類關(guān)聯(lián)B類的情況。解析:一個(gè)Java應(yīng)用中不可能只有一個(gè)類,所以了解類之間的關(guān)系對(duì)程序員來(lái)說(shuō)非常重要。關(guān)聯(lián)關(guān)系是最常用的一種關(guān)系,如果說(shuō)A關(guān)聯(lián)B,那么就是B作為A的屬性存在。關(guān)聯(lián)關(guān)系
13、是一種復(fù)用的策略,即A關(guān)聯(lián)B的時(shí)候,A可以復(fù)用B的行為。參考答案:Class A Private B b;Public void setB(B b)This.b=b;2、請(qǐng)說(shuō)明Java語(yǔ)言中數(shù)組的基本概念,數(shù)組的作用,以及數(shù)組的聲明創(chuàng)建方式。解析:數(shù)組時(shí)任何一門語(yǔ)言里都常用的類型,Java語(yǔ)言也不例外。程序員了解數(shù)組,不能僅僅從語(yǔ)法上了解,而應(yīng)該深入理解數(shù)組的作用。數(shù)組可
14、以用來(lái)存儲(chǔ)類型相同的元素,作為一種數(shù)據(jù)容器使用。和數(shù)組類似的概念是集合,也能作為數(shù)據(jù)容器使用。參考答案:數(shù)組時(shí)相同元素的集合,作為數(shù)據(jù)容器使用。聲明創(chuàng)建一個(gè)int型數(shù)組,如下所示:intx=new int3;其中3是數(shù)組的長(zhǎng)度,該數(shù)組能夠存儲(chǔ)3個(gè)int型變量。3、使用代碼,創(chuàng)建一個(gè)長(zhǎng)度為5的String型數(shù)組,并使用增強(qiáng)for循環(huán)迭代數(shù)組打印出數(shù)組中的元素。解析:增強(qiáng)for循環(huán)是JDK5增加的特性,可以方便地遍歷數(shù)組或集合。程序員需要了解的是,如果JDK版本低于5.0,則不支持這個(gè)功能。另外,并不是說(shuō)有了增強(qiáng)for循環(huán)后,傳統(tǒng)的for循環(huán)就不被使用,增強(qiáng)for循環(huán)只能用來(lái)方便地遍歷數(shù)
15、組和集合,其他情況下還要使用傳統(tǒng)的for循環(huán)。參考答案: String sArray = new String5;For(String s:sArray) System.out.println(s);4、說(shuō)明Arrays類的作用。解析:在實(shí)際工作中,常常需要對(duì)數(shù)組中的元素進(jìn)行處理,例如排序等。初級(jí)程序員往往選擇自己編寫算法實(shí)現(xiàn)。實(shí)際上APV中提供了Arrays類,該類中定義了很多和數(shù)組有關(guān)的工具方法,能夠方便地處理數(shù)組,是程序員必須掌握的類。參考答案:A
16、rrays類是java.util包中的一個(gè)類,類中所有的方法都是static方法,這些方法都是數(shù)組對(duì)象的工具方法,能夠?qū)?shù)組進(jìn)行處理,如sort方法可以對(duì)數(shù)組元素進(jìn)行排序5、請(qǐng)使用簡(jiǎn)單代碼展示A類依賴B類的含義。解析:對(duì)于程序員來(lái)說(shuō),了解類和類之間的關(guān)系非常必要。依賴關(guān)系指的是一種瞬間的關(guān)系。如果A依賴B,一般指的是A類的某個(gè)行為,需要B類對(duì)象作為參數(shù)。參考答案:Class APublic void f(B b)6、請(qǐng)說(shuō)明依賴關(guān)系和關(guān)聯(lián)關(guān)系的區(qū)別。解析:關(guān)聯(lián)關(guān)系和依賴關(guān)系是非常常見的兩種關(guān)系,二者的區(qū)別也很明顯,程序員了解二者的區(qū)別能夠更深入的理解面向?qū)?/p>
17、象的思想。參考答案:依賴關(guān)系是一種瞬時(shí)關(guān)系,A依賴B,指的是A的某個(gè)行為的參數(shù)是B的類型,也就是說(shuō),A要想實(shí)現(xiàn)這個(gè)行為,必須依賴B的實(shí)例,A關(guān)聯(lián)B,是一種長(zhǎng)久的關(guān)系。?的是B作為A的屬性存在,只要實(shí)例化一個(gè)A的對(duì)象,就會(huì)為這個(gè)A的對(duì)象實(shí)例化一個(gè)B的對(duì)象,作為它的屬性使用,可以在A中任何需要使用B的地方使用B。7.繼承有什么作用,Java語(yǔ)言中的繼承有什么特點(diǎn)?解析:繼承是面向?qū)ο笳Z(yǔ)言的一大特征,主要作用是重復(fù)使用,子類通過(guò)繼承父類,能夠重復(fù)使用父類的屬性和方法。指的注意的是,有兩個(gè)策略都可使實(shí)現(xiàn)重復(fù)使用,一個(gè)是關(guān)聯(lián),一個(gè)是繼承,實(shí)際編程中,關(guān)聯(lián)用的更多。因?yàn)樽宇惱^承父類后,相當(dāng)于父類中的細(xì)節(jié)將
18、暴露給子類。初級(jí)程序員一定不要隨意使用繼承,避免濫用繼承。 參考答案:繼承主要為了能夠重復(fù)使用父類中的成員。Java語(yǔ)言中的繼承是單繼承,也就是說(shuō)一個(gè)類最多只能繼承一個(gè)父類。8、什么是方法覆蓋(override)?并說(shuō)明方法覆蓋與方法重載(overioad)的區(qū)別。 解析:方法覆蓋是一個(gè)非常重要的概念,是多態(tài)性的一個(gè)體現(xiàn)。方法覆蓋發(fā)生再去愛繼承關(guān)系中,當(dāng)子類需要修改從父類繼承到某個(gè)方法的方法體時(shí),就可以聲明一個(gè)父類同名同參數(shù)同返回值的方法,這樣就對(duì)父類中的那個(gè)方法進(jìn)行了覆蓋,子類對(duì)象調(diào)用該方法時(shí)將自動(dòng)綁定到子類中的方法。中很多
19、類中都進(jìn)行了方法覆蓋,如String類中的toString方法,就覆蓋了父類Object中的toString方法。參考答案:覆蓋是發(fā)生在繼承關(guān)系的子類中,當(dāng)子類要修改從父類繼承的某個(gè)方法的方法體時(shí),就可以在子類中聲明一個(gè)與父類同名、同參數(shù)并且同返回值類型的方法,這就是方法覆蓋。而重載與繼承沒有關(guān)系,指的是在一個(gè)類中可以同時(shí)聲明多個(gè)同名但不同參數(shù)的方法,稱為重載。9、請(qǐng)說(shuō)明什么是抽象類?抽象類有什么作用?解析:初級(jí)程序員往往不需要自己創(chuàng)建抽象類,但是必須了解抽象類的概念,并且會(huì)使用抽象類。抽象類往往是設(shè)計(jì)階段的概念,用來(lái)定義多個(gè)子類的模板,一些具體的實(shí)現(xiàn)可以在子類中進(jìn)行。初級(jí)程序員往往需要會(huì)創(chuàng)建
20、子類繼承抽象類,實(shí)現(xiàn)抽象類中的方法。在API中,抽象類比比皆是。 參考答案:抽象類是不能實(shí)例化的類,使用abstract修飾。抽象類往往用來(lái)做父類使用,定義一些子類的共同屬性或行為。10、請(qǐng)說(shuō)明抽象方法的含義,并說(shuō)明抽象類與抽象方法的關(guān)系。解析:抽象方法都是在抽象類中定義的,是用來(lái)定義子類what to do的策略,而具體的how to do都在子類中實(shí)現(xiàn)。參考答案:抽象方法是沒有辦法體的方法,使用abstract修飾。抽象類中不一定有抽象方法,但是有抽象方法的類一定是抽象類。11、super關(guān)鍵字的兩種用法。
21、;解析:使用一些IDE生成代碼時(shí),常常會(huì)在構(gòu)造方法中見到super這個(gè)關(guān)鍵字。顧名思義,super是和父類有關(guān)的一個(gè)關(guān)鍵字,熟悉super的用法對(duì)熟練掌握繼承很有必要。參考答案:如super():表示調(diào)用父類中的每一參考的構(gòu)造方法:又如super(10);表示調(diào)用父類中的具有一個(gè)整型參數(shù)的構(gòu)造方法。第二種用法是在子類中調(diào)用父類中的成員,如super.f();意思是調(diào)用父類中的f()方法。12、final類與final方法有什么作用?解析:final修飾符是一個(gè)用途非常廣泛的修飾符,可以修飾類,方法,以及屬性。參考答案:final類是不能夠被繼承的類,稱為終極類,如String類就是final類
22、,不能有子類。final修飾方法后,是終極方法,不能被子類覆蓋,但是可以被子類繼承使用。13.什么是多態(tài)函數(shù)?多態(tài)函數(shù)有什么用?解析:多態(tài)性是面向?qū)ο笳Z(yǔ)言的的一大特征,重載,覆蓋,多態(tài)參數(shù)是多態(tài)性的一種表現(xiàn)形式。多態(tài)參數(shù)處處可見,例如某方法f(Object o),這個(gè)方法的參數(shù)類型是Object,使用該方法時(shí),只要傳遞給f的單數(shù)類型是Object即可。也就是說(shuō),Object類的任意參數(shù)可以傳遞給f方法。這就是多態(tài)參數(shù)。意思是對(duì)外形式都一樣,都是Object,具體實(shí)現(xiàn)可以是這個(gè)類型的任意子類,這就使得該方法比較靈活,Object類即使有了新的子類,卻不需要修改,就能直接作用到那個(gè)子類。
23、了解多態(tài)參數(shù)的含義和使用,對(duì)于Java的使用特別關(guān)鍵。參考答案:多態(tài)函數(shù)就是參數(shù)的類型是某個(gè)父類類型,具體為這個(gè)參數(shù)賦值的不同以使用該父類的任意子類的對(duì)象。使用多態(tài)參數(shù),可以使程序的擴(kuò)展性更好,即使%的子類方法不需要任何修改,就能接受子類類型進(jìn)行處理。14.Object類有什么特點(diǎn)?解析:Object類是一個(gè)非常重要的類,是所有類的父類,包括數(shù)組在內(nèi),也就是對(duì)一個(gè)Java類,不管是API中定義的,還是自定義的類,都直接或間接的繼承了Object類。所以,如果有一個(gè)方法f(Object o),那么可以傳遞給這個(gè)方法任意一個(gè)類的對(duì)象,包括%。因?yàn)樗袑?duì)象都可以說(shuō)是Object類型。參考答
24、案:Object類是多有類的直接或間接的父類。15.Object類中的toString方法有什么用?解析:Object類是所有類的父類,所以O(shè)bject類中的方法是所有類都默認(rèn)具備的。類中的toString 方法可以將任意一個(gè)對(duì)象作為字符串返回,默認(rèn)的格式是“類名內(nèi)地%”API中很多類已經(jīng)覆蓋了這個(gè)方法,將其返回值的格式進(jìn)行了自定義,如String類中的方法已經(jīng)覆蓋為返回字符串的字符序列。toString 方法在很多場(chǎng)合被自動(dòng)調(diào)用,例如%一個(gè)對(duì)象時(shí),就自動(dòng)調(diào)用該對(duì)象的toString 方法,如果需要修改返回字符串的格式,%另外類中的覆蓋toString方法。參考答
25、案:toString方法可以把對(duì)象作為字符串返回。16.Object類中的equals方法和hashCode 方法。解析:在Object類中,equals方法比較對(duì)象的引用值,也就是只有物理上是同一對(duì)象的兩個(gè)引用,在使用equals方法返回true。hashCode方法返回一個(gè)對(duì)象的內(nèi)在地址的十六進(jìn)制值。由于Object類是所有類的父類,所以任意類中都擁有這兩個(gè)方法,并都可以進(jìn)行覆蓋。尤其是操作Set,Map對(duì)象時(shí)集合元素類的equals方法和hashCode方法非常必要,因?yàn)镾et和Map判斷元素是否重%是依靠這兩個(gè)方法進(jìn)行。一般的原則是:如果存在X和Y兩個(gè)對(duì)象,調(diào)用X.equal
26、s(Y)相同時(shí),那么調(diào)用hashCode方法返回值也應(yīng)該相同;如果X.equals(Y)返回false時(shí),那么調(diào)用hashCode方法返回值可能相同,也可能不同。值得注意的是,只要你覆蓋了equals方法,一定%則覆蓋hashCode 方法。在實(shí)際工作中,很多IDE環(huán)境都支持覆蓋equals和hashCode 方法。參考答案:Oject類中的equals方法用來(lái)比較兩個(gè)引用值,hashCode用來(lái)返回引用的內(nèi)地址的十六進(jìn)制數(shù)值。在Set以及Map集合中,判斷兩個(gè)元素是否重復(fù)時(shí),往往需要使用這兩個(gè)方法。這兩個(gè)方法往往被子類覆蓋,覆蓋的規(guī)則是:如果存在x和y兩個(gè)對(duì)象,調(diào)用x.e
27、quals(y)返回true時(shí),那么調(diào)用hashCode方法的返回值也該相同;如果x.equals(y)返回false時(shí),那么調(diào)用hashCode方法返回的值可能相同,也可能不同。17.接口有什么特點(diǎn),與抽象類有什么區(qū)別?解析:接近歐的概念是一個(gè)設(shè)計(jì)層面的概念,初級(jí)程序員往往不會(huì)自己定義接口,但是會(huì)使用接口,理解接口的概念非常必要。接口定義了實(shí)現(xiàn)類的規(guī)范,即what to do的部分,所有實(shí)現(xiàn)類必須按照這個(gè)規(guī)范進(jìn)行實(shí)現(xiàn)。參考答案:接口的特點(diǎn)是不能定義變量,而且所有方法都是抽象方法。而抽象類中可以有變量,也不強(qiáng)制必須有抽象方法。18.類繼承父類與類實(shí)現(xiàn)接口,有什么區(qū)別?解析:
28、類繼承父類與類實(shí)現(xiàn)接口,本質(zhì)上其實(shí)是一樣的。都是將父類或者接口作為模板,在這個(gè)模板上進(jìn)行擴(kuò)展或者重寫。程序員在實(shí)際編程中,常常需要繼承父類或者實(shí)現(xiàn)接口。參考答案:類繼承父類只是單繼承,也就是一個(gè)子類最多只有一個(gè)父類;而類實(shí)現(xiàn)接口可以多實(shí)現(xiàn),就是一個(gè)子類可以同時(shí)實(shí)現(xiàn)多個(gè)接口,并覆蓋所有接口中的所有抽象方法。19.Comparable接口有什么作用解析:comparable接口是在實(shí)際編程中常常使用的接口,該接口定義了comareTo(Object o)方法,用來(lái)定義對(duì)象的比較邏輯。這個(gè)接口常常在其他API中會(huì)強(qiáng)制使用,例如Arrays類的sort(Object)方法,就強(qiáng)制數(shù)組元素必須
29、實(shí)現(xiàn)Comparable接口,與這個(gè)接口類似的 另外一個(gè)接口是Comparator。參考答案:Comparable接口定義了compareTo(Object o)方法,可以用來(lái)實(shí)現(xiàn)對(duì)象的比較邏輯,這個(gè)接口常常在其他API中強(qiáng)制使用,用來(lái)規(guī)范對(duì)象的比較邏輯第二部分 異常處理1 .什么是異常?異常和錯(cuò)誤有什么區(qū)別?解析:異常處理是面向?qū)ο笳Z(yǔ)言比起過(guò)程式語(yǔ)言的一大改進(jìn)。對(duì)于Java程序員來(lái)說(shuō),必須了解異常處理,才能順利編程。參考答案:異常是一些不正常的事件,能夠中斷程序的正常執(zhí)行例如才除0計(jì)算就是異常。和錯(cuò)誤不同,異常是可以被處理的,而錯(cuò)誤往往是不能夠處理的,如內(nèi)存溢出
30、錯(cuò)誤。2 .nullPointException是什么異常?什么情況發(fā)生該異常?解析:程序員必須能夠了解常見的異常的發(fā)生原因,并能夠處理。NullPointerException就是特別常見的運(yùn)行期異常。參考答案:NullPointerExcepiton是空指針異常,當(dāng)一個(gè)引用沒喲被賦值,就是一null值如果這種情況下, 使用該引用調(diào)用其屬性或者方法, 就會(huì)發(fā)生NullPointerException異常。3.說(shuō)明try/catch/finally語(yǔ)句塊的作用解析:編寫Java程序,避免不了需要處理異常。Java中處理異常使用try/catch/finally來(lái)實(shí)
31、現(xiàn)。尤其其中的finally語(yǔ)句非常值得程序員關(guān)注,可以用來(lái)執(zhí)行必須實(shí)現(xiàn)的功能,例如數(shù)據(jù)庫(kù)的鏈接等操作。參考答案:try語(yǔ)句塊用來(lái)包含可能發(fā)生異常的語(yǔ)句,catch塊用來(lái)捕獲異常,finally用來(lái)包含必須執(zhí)行的語(yǔ)句。4如何使用語(yǔ)句拋出異常,拋出異常后如何處理?解析:某些業(yè)務(wù)邏輯的非正常事件流,可以使用拋出異常來(lái)標(biāo)記。拋出的異常必須是有意義的異常類型,建議不要使用API中的標(biāo)準(zhǔn)異常類,避免混淆。參考答案:使用throw語(yǔ)句就可以拋出異常,如throw new XXXException()。拋出異常時(shí)一般情況下會(huì)在聲明方法處使用throws聲明該類型的異常,調(diào)用該
32、方法是編譯器將提示異常。5. throws 關(guān)鍵字和 throw 關(guān)鍵字有什么區(qū)別和聯(lián)系?解析:throws和throw是異常處理時(shí)兩個(gè)常見的關(guān)鍵字,初級(jí)程序員常常容易正確理解throw和throws的作用和區(qū)別,說(shuō)明已經(jīng)能比較深入理解異常處理。Throw用來(lái)拋出異常,如果執(zhí)行了throw語(yǔ)句,程序?qū)l(fā)生異常,進(jìn)入到異常處理機(jī)制。Throws用來(lái)聲明異常,說(shuō)明這個(gè)方法可能會(huì)發(fā)生某些類型的異常,那么編譯器將強(qiáng)制在調(diào)用這個(gè)方法的時(shí)候處理異常。API中的很多方法都使用了throws聲明了異常,所以使用這些方法時(shí)編譯器會(huì)提示需要處理異常。參考答案:throw用來(lái)
33、在方法體內(nèi)拋出異常,而throws用來(lái)在方法聲明處聲明異常。這兩個(gè)關(guān)鍵字有著一定的聯(lián)系。如果一個(gè)方法中使用了throw關(guān)鍵字拋出了異常,那么要么立即用try/catch語(yǔ)句進(jìn)行捕獲,要么就是用throws進(jìn)行聲明,否則將出現(xiàn)編譯錯(cuò)誤。然而,并不是只有使用了throw關(guān)鍵字之后才能使用throws關(guān)鍵字,語(yǔ)法上來(lái)說(shuō),任何一個(gè)方法都可以直接使用throws關(guān)鍵字,抽象方法也可以使用。6. 什么是自定義異常類?為什么要自定義異常類?解析:企業(yè)應(yīng)用中,往往會(huì)自定義一系列的異常類,標(biāo)記一些非正常的事件流。然而,這些自定義異常類不會(huì)讓每個(gè)程序員都自定義,而是會(huì)由專人定義,分發(fā)給程序員使用。參考答
34、案:自定義異常類區(qū)別于API中的標(biāo)準(zhǔn)異常類,指的是開發(fā)人員自己創(chuàng)建的異常類。只要繼承API中某個(gè)異常類就可以自定義一個(gè)異常類,常常集成Exception類。自定義異常類主要是為了標(biāo)記業(yè)務(wù)邏輯中非正常事件流,避免與API中的標(biāo)準(zhǔn)異常混淆。第四部分核心API1. 請(qǐng)畫出Java集合框架的主要接口和類的繼承關(guān)系。解析:集合石非常重要的類型, 也是企業(yè)考察員工編程能力時(shí)常常關(guān)注的知識(shí)點(diǎn)。程序員應(yīng)該熟悉Java集合框架的主要繼承關(guān)系, 掌握常用集合類的用法和特點(diǎn)2. Collection接口和Map接口分別定義了什么集合類型?有什么區(qū)別?解
35、析:Collection和Map是Java集合框架中兩個(gè)基本集合類型,要區(qū)別不同的集合首先要從Collection和Map開始。參考答案:Collection接口是傳統(tǒng)的集合接口,可以把單個(gè)對(duì)象存儲(chǔ)進(jìn)來(lái)。而Map接口是映射接口,存儲(chǔ)的是鍵值對(duì)。3. 用簡(jiǎn)單代碼演示創(chuàng)建一個(gè)泛型類為Customer類的List對(duì)象,并使用增強(qiáng)for循環(huán)迭代集合。解析:JDK5以后,集合框架中的接口和類都是泛型類及泛型接口,并可以使用增強(qiáng)for循環(huán)迭代集合。程序員需要確認(rèn)開發(fā)平臺(tái)的JDK版本,如果低于5.0則不能使用這些功能。參考答案: ArrayList<Customer&g
36、t; list = new ArrayList<Customer>();For(Customer c : list) 4. List和Set集合有什么區(qū)別?解析:List和Set是Collection接口的兩個(gè)子接口,也是使用最多的兩種集合類型。程序員應(yīng)該熟悉這兩個(gè)接口的基本特征,能夠更準(zhǔn)確地選擇正確的集合類型。參考答案:List實(shí)現(xiàn)了列表類型的集合,List中的元素是有序(ordered)的,每個(gè)元素根據(jù)放入集合的順序而對(duì)應(yīng)一個(gè)索引值, 可以根據(jù)這個(gè)索引值返回集合原宿。而Set實(shí)現(xiàn)
37、了不重復(fù)元素集合,即Set中的元素不能夠重復(fù),重復(fù)的元素將無(wú)法添加到集合中。5. List接口有哪幾個(gè)實(shí)現(xiàn)類?分別說(shuō)明其特征解析:List是用的較多的集合類型,List是一個(gè)接口,具體使用List集合類型時(shí),需要使用時(shí)實(shí)現(xiàn)類。List接口的每個(gè)實(shí)現(xiàn)類也都實(shí)現(xiàn)了不同的數(shù)據(jù)結(jié)構(gòu),各自具有不同的特征,其中最常用的是List實(shí)現(xiàn)類。參考答案:List接口中有以下幾個(gè)常用實(shí)現(xiàn)1 ArrayList:實(shí)現(xiàn)了動(dòng)態(tài)數(shù)組的特征。2 LinkedList: 實(shí)現(xiàn)了鏈表的數(shù)據(jù)結(jié)構(gòu),LinkedList也可以用作?;蛘哧?duì)列。3 Vector:向量。4
38、60;ArrayList Vector類的功能 ArrayList都可以實(shí)現(xiàn),區(qū)別在于Vector是現(xiàn)行同步的。6. Collectioin 和Collections有什么區(qū)別?解析:很多初級(jí)程序員對(duì)Collectioni和Collections容易混淆,二者的名字非常類似,本義卻大大不同,Collections類與Arrays類非常類似,都是工具類,程序員應(yīng)該熟悉掌握。參考答案:Collection是一個(gè)接口的名字,定義了集合類型的共同特征。而Collections是一個(gè)類的名字,是集合類型的工具類,類中定義了大量的靜態(tài)方法,能
39、夠操作及和對(duì)象。7. 如何將一個(gè)Collection轉(zhuǎn)換成數(shù)組?解析:集合和數(shù)組有很多共同的地方,二者都是作為數(shù)據(jù)容器使用, 用來(lái)持有數(shù)據(jù)。數(shù)組的長(zhǎng)度是固定的,集合的長(zhǎng)度卻可以動(dòng)態(tài)擴(kuò)展,數(shù)組由于可以直接通過(guò)索引操作其元素,所以性能和效率較高。實(shí)際應(yīng)用中,可能使用及合作為臨時(shí)變量持有數(shù)據(jù),卻將處理結(jié)果轉(zhuǎn)換成數(shù)組返回。參考答案:Collection接口中定義了toArray(T a)方法來(lái)將集合轉(zhuǎn)換為數(shù)組,其中T是泛型類型。8、 集合的作用?集合是可以存儲(chǔ)一批類型不同的對(duì)象,針對(duì)集合的實(shí)現(xiàn)類有很多,作用都是一樣的,即存儲(chǔ)、傳輸數(shù)據(jù),但存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)不一樣,
40、其速度、安全性也不一樣。9 、HashMap和TreeMap在性能上有什么樣的差別呢?你比較傾向于使用哪一個(gè)?一個(gè)平衡樹的性能是O(logn)。Java里的TreeMap用一個(gè)紅黑樹來(lái)保證key/value的排序。紅黑樹是平衡二叉樹。保證二叉樹的平衡性,使得插入,刪除和查找都比較快,時(shí)間復(fù)雜度都是O(log n)。不過(guò)它沒有HashMap快,HashMap的時(shí)間復(fù)雜度是O(1),但是TreeMap的優(yōu)點(diǎn)在于它里面鍵值是排過(guò)序的,這樣就提供了一些其他的很有用的功能。 使用無(wú)序的HashSet和HashMap,還是使用有序的TreeSet和TreeMap,主要取決于你的實(shí)際使用
41、場(chǎng)景,一定程度上還和數(shù)據(jù)的大小以及運(yùn)行環(huán)境有關(guān)。比較實(shí)際的一個(gè)原因是,如果插入和更新都比較頻繁的話,那么保證元素的有序可以提高快速和頻繁查找的性能。如果對(duì)于排序操作(例如產(chǎn)生一個(gè)報(bào)表合作者運(yùn)行一個(gè)批處理程序)的要求不是很頻繁的話,那么把數(shù)據(jù)以無(wú)序的方式存儲(chǔ),然后在需要排序的時(shí)候用Collections.sort()來(lái)進(jìn)行排序,會(huì)比用有序的方式來(lái)存儲(chǔ)可能會(huì)更加高效。這個(gè)只是一種可選的方式,沒人能給你一個(gè)確切的答案。即使是復(fù)雜度的理論,例如O(n),成立的前提也是在n足夠大的情況下。只要在n足夠小的情況下,就算是O(n)的算法也可能會(huì)比O(log n)的算法更加高效。另外,一個(gè)算法可能在AMD處理器上的速度比在Intel處理器上快。如果你的系統(tǒng)有交換區(qū)的話,那么你還要考慮磁盤的性能。唯一可以確定的性能測(cè)試途徑是用大小合適的數(shù)據(jù)來(lái)測(cè)試和衡量程序的性能和內(nèi)存使用量。在你所選擇的硬件上來(lái)測(cè)試這兩種指標(biāo),是最合適的方法。10、 什么是Iterator迭代器是一種設(shè)計(jì)模式,它是一個(gè)對(duì)象,它可以遍歷并選擇序列中的對(duì)象,而開發(fā)人員不需要了解該序列的底層結(jié)構(gòu)。迭代器通常被稱為“輕量級(jí)”對(duì)象,因?yàn)閯?chuàng)建它的代價(jià)小。 Java中的Iterator功能比較簡(jiǎn)單,并且只能單向移動(dòng):
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司數(shù)字化活動(dòng)方案
- 公司羽毛球團(tuán)建活動(dòng)方案
- 公司秋季出游活動(dòng)方案
- 公司粽子節(jié)活動(dòng)方案
- 公司新人見面會(huì)策劃方案
- 公司畢業(yè)晚會(huì)活動(dòng)方案
- 公司聚會(huì)團(tuán)建策劃方案
- 公司比學(xué)趕幫超活動(dòng)方案
- 公司端午慰問(wèn)活動(dòng)方案
- 公司消除浪費(fèi)活動(dòng)方案
- 體外診斷試劑盒線性范圍研究線性區(qū)間評(píng)價(jià)資料及可報(bào)告區(qū)間建立
- AQ 1097-2014 井工煤礦安全設(shè)施設(shè)計(jì)編制導(dǎo)則(正式版)
- 甲乙方施工合同范本
- 嬰幼兒配方乳粉市場(chǎng)銷售管理規(guī)范
- 小班語(yǔ)言《誰(shuí)的救生圈》課件
- 海思芯片PC-測(cè)試技術(shù)規(guī)范
- 內(nèi)陸?zhàn)B殖與水生植物種植
- 集體協(xié)商培訓(xùn)課件
- Unit 3 What would you like A Let's learn(教學(xué)設(shè)計(jì))人教PEP版英語(yǔ)五年級(jí)上冊(cè)
- 物業(yè)社區(qū)團(tuán)購(gòu)方案
- 仙家送錢表文-文字打印版
評(píng)論
0/150
提交評(píng)論