




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
經(jīng)典word整理文檔,僅參考,雙擊此處可刪除頁眉頁腳。本資料屬于網(wǎng)絡(luò)整理,如有侵權(quán),請(qǐng)聯(lián)系刪除,謝謝!1.JDK和JRE有什么區(qū)別?JDKJavaDevelopmentKit的簡(jiǎn)稱,java開發(fā)工具包,提供了java的開發(fā)環(huán)境和運(yùn)行環(huán)境。JREJavaRuntimeEnvironment的簡(jiǎn)稱,java運(yùn)行環(huán)境,為java的運(yùn)行提供了所需環(huán)境。具體來說JDK其實(shí)包含了JRE,同時(shí)還包含了編譯java源碼的編譯器javac,還包含了很多java程序調(diào)試和分析的工具。簡(jiǎn)單來說:如果你需要運(yùn)行java程序,只需安裝JRE就可以了,如果你需要編寫java程序,需要安裝JDK。對(duì)于基本類型和引用類型==的作用效果是不同的,如下所示:基本類型:比較的是值是否相同;引用類型:比較的是引用是否相同;代碼示例:x=y=z=代碼解讀:因?yàn)閤和y指向的是同一個(gè)引用,所以==也是true,而newString()方法則重寫開辟了內(nèi)存空間,所以==結(jié)果為false,而equals比較的一直是值,所以結(jié)果都為true。equals解讀equals本質(zhì)上就是==String和Integer等重寫了equals方法,把它變成了值比較??聪旅娴拇a就明白了。首先來看默認(rèn)情況下equals比較一個(gè)有相同值的對(duì)象,代碼如下:{{=}{}{===輸出結(jié)果出乎我們的意料,竟然是知道了,源碼如下:false?這是怎么回事,看了equals源碼就{原來equals本質(zhì)上就是==。那問題來了,兩個(gè)相同值的String對(duì)象,為什么返回的是true?代碼如下:==同樣的,當(dāng)我們進(jìn)入String的equals方法,找到了答案,代碼如下:{{}{=n={=;=;i=;0){;};}}原來是String重寫了Object的equals方法,把引用比較改成了值總結(jié):==對(duì)于基本類型來說是值比較,對(duì)于引用類型來說是比較的是equals方法,比如String、Integer等把它變成了值比較,所以一般情況下equals比較的是值是否相等。3.兩個(gè)對(duì)象的hashCode()equals()也一定為true代碼示例:=;=;|,執(zhí)行的結(jié)果:hashCode()equals()則為false,因?yàn)樵谏⒘斜碇?,hashCode()相等即兩個(gè)鍵值對(duì)的哈希值相等,然而哈希值相等,并不一定能得出鍵值對(duì)相等。4.final在java中有什么作用?final修飾的類叫最終類,該類不能被繼承final修飾的方法不能被重寫。final修飾的變量叫常量,常量必須初始化,初始化之后值就不能被修改等于-10.5所以正0.5是往上取整,負(fù)0.5是直接舍棄。String不屬于基礎(chǔ)類型,基礎(chǔ)類型有8種:byte、boolean、char、short、int、float、long、double,而String屬于對(duì)象。7.java中操作字符串都有哪些類?它們之間有什么區(qū)別?操作字符串的類有:String、StringBuffer、StringBuilder。String和StringBufferStringBuilder的區(qū)別在于String聲明的是不可變的對(duì)象,每次操作都會(huì)生成新的String對(duì)象,然后將指針指向新的String對(duì)象,而StringBuffer、StringBuilder可以在原有對(duì)象的基礎(chǔ)上進(jìn)行操作,所以在經(jīng)常改變字符串內(nèi)容的情況下最好不要使用String。StringBuffer和StringBuilder最大的區(qū)別在于,StringBuffer是線程安全的,而StringBuilder是非線程安全的,但StringBuilder的性能卻高于StringBufferStringBuilder,多線程環(huán)境下推薦使用StringBuffer。不一樣,因?yàn)閮?nèi)存的分配方式不一樣。Stringstr="i"的方式,java虛擬機(jī)會(huì)將其分配到常量池中;而Stringstr=newString("i")則會(huì)被分到堆內(nèi)存中。9.如何將字符串反轉(zhuǎn)?示例代碼:==10.String類的常用方法都有那些?indexOf():返回指定字符的索引。charAt():返回指定索引處的字符。replace():字符串替換。trim():去除字符串兩端空白。split():分割字符串,返回一個(gè)分割后的字符串?dāng)?shù)組。getBytes():返回字符串的byte類型數(shù)組。length():返回字符串長度。toLowerCase():將字符串轉(zhuǎn)成小寫字母。toUpperCase():將字符串轉(zhuǎn)成大寫字符。substring():截取字符串。equals():字符串比較。11.抽象類必須要有抽象方法嗎?不需要,抽象類不一定非要有抽象方法。示例代碼:{{上面代碼,抽象類并沒有抽象方法但完全可以正常運(yùn)行。12.普通類和抽象類有哪些區(qū)別?普通類不能包含抽象方法,抽象類可以包含抽象方法。抽象類不能直接實(shí)例化,普通類可以直接實(shí)例化。13.抽象類能使用final修飾嗎?final該類就不能被繼承,這樣彼此就會(huì)產(chǎn)生矛盾,所以所示,編輯器也會(huì)提示錯(cuò)誤信息:final不能修飾抽象類,如下圖14.接口和抽象類有什么區(qū)別?extends來繼承;接口必須使用implements來實(shí)現(xiàn)接口。構(gòu)造函數(shù):抽象類可以有構(gòu)造函數(shù);接口不能有。main方法:抽象類可以有main方法,并且我們能運(yùn)行它;接口不能有main方法。實(shí)現(xiàn)數(shù)量:類可以實(shí)現(xiàn)很多個(gè)接口;但是只能繼承一個(gè)抽象類。訪問修飾符:接口中的方法默認(rèn)使用以是任意訪問修飾符。public修飾;抽象類中的方法可15.java中IO流分為幾種?字節(jié)流和字符流的區(qū)別是:字節(jié)流按8位傳輸以字節(jié)為單位輸入輸出數(shù)據(jù),字符流按16位傳輸以字符為單位輸入輸出數(shù)據(jù)。16.BIO、NIO、AIO有什么區(qū)別?BIO:BlockIO同步阻塞式IO,就是我們平常使用的傳統(tǒng)IO,它的特點(diǎn)是模式簡(jiǎn)單使用方便,并發(fā)處理能力低。NIO:NewIO同步非阻塞IO,是傳統(tǒng)IO的升級(jí),客戶端和服務(wù)器端通過Channel(通道)通訊,實(shí)現(xiàn)了多路復(fù)用。AIO:AsynchronousIO是NIO的升級(jí),也叫NIO2,實(shí)現(xiàn)了異步非堵塞IO,異步IO的操作基于事件和回調(diào)機(jī)制。17.Files的常用方法都有哪些?Files.exists():檢測(cè)文件路徑是否存在。Files.createFile():創(chuàng)建文件。Files.createDirectory():創(chuàng)建文件夾。Files.delete():刪除一個(gè)文件或目錄。Files.copy():復(fù)制文件。Files.move():移動(dòng)文件。Files.size():查看文件個(gè)數(shù)。Files.read():讀取文件。Files.write():寫入文件。18.java容器都有哪些?常用容器的圖錄:19.Collection和Collections有什么區(qū)別?java.util.Collection是一個(gè)集合接口(集合類的一個(gè)頂級(jí)接口)。它提供了對(duì)集合對(duì)象進(jìn)行基本操作的通用接口方法。Collection接口在Java類庫中有很多具體的實(shí)現(xiàn)。Collection接口的意義是為各種具體的集合提供了最大化的統(tǒng)一操作方式,其直接繼承接口有List與Set。Collections則是集合類的一個(gè)工具類/幫助類,其中提供了一系列靜態(tài)方法,用于對(duì)集合中元素進(jìn)行排序、搜索以及線程安全等各種操作。20.List、Set、Map之間的區(qū)別是什么?21.HashMap和Hashtable有什么區(qū)別?hashMap去掉了HashTable的contains方法,但是加上了containsValue()和containsKey()方法。hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。hashMap允許空鍵值,而hashTable不允許。22.如何決定使用HashMap還是TreeMap?對(duì)于在Map中插入、刪除和定位元素這類操作,HashMap是最好的選擇。然而,假如你需要對(duì)一個(gè)有序的key集合進(jìn)行遍歷,TreeMap是更好的選擇?;谀愕腸ollection的大小,也許向HashMap中添加元素會(huì)更快,將map換為TreeMap進(jìn)行有序key的遍歷。HashMap概述:HashMap是基于哈希表的Map接口的非同步實(shí)現(xiàn)。此實(shí)現(xiàn)提供所有可選的映射操作,并允許使用null值和null鍵。此類不保證映射的順序,特別是它不保證該順序恒久不變。HashMap的數(shù)據(jù)結(jié)構(gòu):在java編程語言中,最基本的結(jié)構(gòu)就是兩種,一個(gè)是數(shù)組,另外一個(gè)是模擬指針(引用),所有的數(shù)據(jù)結(jié)構(gòu)都可以用這兩個(gè)基本結(jié)構(gòu)來構(gòu)造的,HashMap也不例外。HashMap實(shí)際上是一個(gè)“鏈表散列”的數(shù)據(jù)結(jié)構(gòu),即數(shù)組和鏈表的結(jié)合體。當(dāng)我們往Hashmap中put元素時(shí),首先根據(jù)key的hashcode重新計(jì)算hash值,根絕hash值得到這個(gè)元素在數(shù)組中的位置(下標(biāo)),如果該數(shù)組在該位置上已經(jīng)存放了其他元素,那么在這個(gè)位置上的元素將以鏈表的形式存放,新加入的放在鏈頭,最先加入的放入鏈尾.如果數(shù)組中該位置沒有元素,就直需要注意Jdk1.8中對(duì)HashMap的實(shí)現(xiàn)做了優(yōu)化,當(dāng)鏈表中的節(jié)點(diǎn)數(shù)據(jù)超過八個(gè)之后,該鏈表會(huì)轉(zhuǎn)為紅黑樹來提高查詢效率,從原來的O(n)到O(logn)24.說一下HashSet的實(shí)現(xiàn)原理?HashSet底層由HashMap實(shí)現(xiàn)HashSet的值存放于HashMap的key上HashMap的value統(tǒng)一為PRESENT最明顯的區(qū)別是ArrrayList底層的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,支持隨機(jī)訪問,而LinkedList的底層數(shù)據(jù)結(jié)構(gòu)是雙向循環(huán)鏈表,不支持隨機(jī)訪問。使用下標(biāo)訪問一個(gè)元素,ArrayList的時(shí)間復(fù)雜度是O(1)LinkedList是O(n)。26.如何實(shí)現(xiàn)數(shù)組和List之間的轉(zhuǎn)換?List轉(zhuǎn)換成為數(shù)組:調(diào)用ArrayList的toArray方法。數(shù)組轉(zhuǎn)換成為List:調(diào)用Arrays的asList方法。27.ArrayList和Vector的區(qū)別是什么?Vector是同步的,而ArrayList不是。然而,如果你尋求在迭代的時(shí)候?qū)α斜磉M(jìn)行改變,你應(yīng)該使用CopyOnWriteArrayList。ArrayList比Vector快,它因?yàn)橛型?,不?huì)過載。ArrayList更加通用,因?yàn)槲覀兛梢允褂肅ollections工具類輕易地獲取同步列表和只讀列表。28.Array和ArrayList有何區(qū)別?Array可以容納基本類型和對(duì)象,而ArrayList只能容納對(duì)象。Array是指定大小的,而ArrayList大小是固定的。Array沒有提供ArrayList那么多功能,比如addAll、removeAll和iterator等。poll()和remove()都是從隊(duì)列中取出一個(gè)元素,但是poll()在獲取元素失敗的時(shí)候會(huì)返回空,但是remove()失敗的時(shí)候會(huì)拋出異常。30.哪些集合類是線程安全的?vector:就比arraylist多了個(gè)同步化機(jī)制(線程安全),因?yàn)樾瘦^低,現(xiàn)在已經(jīng)不太建議使用。在web應(yīng)用中,特別是前臺(tái)頁面,面響應(yīng)速度)是優(yōu)先考慮的。statck:堆棧類,先進(jìn)后出。hashtable:就比hashmap多了個(gè)線程安全。enumeration:枚舉,相當(dāng)于迭代器。31.迭代器Iterator是什么?迭代器是一種設(shè)計(jì)模式,它是一個(gè)對(duì)象,它可以遍歷并選擇序列中的對(duì)象,而開發(fā)人員不需要了解該序列的底層結(jié)構(gòu)。迭代器通常被稱為“輕量級(jí)”對(duì)象,因?yàn)閯?chuàng)建它的代價(jià)小。32.Iterator怎么使用?有什么特點(diǎn)?Java中的Iterator功能比較簡(jiǎn)單,并且只能單向移動(dòng):(1)使用方法iterator()要求容器返回一個(gè)IteratorIterator的next()方法時(shí),它返回序列的第一個(gè)元素。注意:java.lang.Iterable接口,被Collection繼承。iterator()方法是(2)使用next()獲得序列中的下一個(gè)元素。(3)使用hasNext()檢查序列中是否還有元素。(4)使用remove()將迭代器新返回的元素刪除。Iterator是Java迭代器最簡(jiǎn)單的實(shí)現(xiàn),為List設(shè)計(jì)的ListIterator具有更多的功能,它可以從兩個(gè)方向遍歷List,也可以從List中插入和刪除元素。33.Iterator和ListIterator有什么區(qū)別?Iterator可用來遍歷Set和List集合,但是ListIterator只能用來遍歷List。Iterator對(duì)集合只能是前向遍歷,ListIterator既可以前向也可以后向。ListIterator實(shí)現(xiàn)了Iterator接口,并包含其他的功能,替換元素,獲取前一個(gè)和后一個(gè)元素的索引,等等。反射反射主要是指程序可以訪問、檢測(cè)和修改它本身狀態(tài)或行為的一種能力Java反射:在Java運(yùn)行時(shí)環(huán)境中,對(duì)于任意一個(gè)類,能否知道這個(gè)類有哪些屬性和方法?對(duì)于任意一個(gè)對(duì)象,能否調(diào)用它的任意一個(gè)方法Java反射機(jī)制主要提供了以下功能:在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類。在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象。在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量和方法。在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法。58.什么是java序列化?什么情況下需要序列化?簡(jiǎn)單說就是為了保存在內(nèi)存中的各種對(duì)象的狀態(tài)(也就是實(shí)例變量,不是方法),并且可以把保存的對(duì)象狀態(tài)再讀出來。雖然你可以用你自己的各種各樣的方法來保存objectstates,但是Java給你提供一種應(yīng)該比你自己好的保存對(duì)象狀態(tài)的機(jī)制,那就是序列化。a)當(dāng)你想把的內(nèi)存中的對(duì)象狀態(tài)保存到一個(gè)文件中或者數(shù)據(jù)庫中時(shí)候;b)當(dāng)你想用套接字在網(wǎng)絡(luò)上傳送對(duì)象的時(shí)候;c)當(dāng)你想通過RMI傳輸對(duì)象的時(shí)候;59.動(dòng)態(tài)代理是什么?有哪些應(yīng)用?動(dòng)態(tài)代理:當(dāng)想要給實(shí)現(xiàn)了某個(gè)接口的類中的方法,加一些額外的處理。比如說加日志,加事務(wù)等。可以給這個(gè)類創(chuàng)建一個(gè)代理,故名思議就是創(chuàng)建一個(gè)新的類,這個(gè)類不僅包含原來類方法的功能,而且還在原來的基礎(chǔ)上添加了額外處理的新類。這個(gè)代理類并不是定義好的,是動(dòng)態(tài)生
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新版試用期勞動(dòng)合同模板合同
- 土地承包合同法律文本示例
- 廠家設(shè)備租賃合同樣本集錦
- 項(xiàng)目合作人才服務(wù)合同
- 茶葉購銷合同模板
- 新產(chǎn)品開發(fā)項(xiàng)目合同協(xié)議書范本
- 保密合同-工作手機(jī)保管細(xì)則
- 度設(shè)備采購借款合同模板
- 倉儲(chǔ)用房租賃合同參考樣本
- 度醫(yī)療服務(wù)采購合同
- 新質(zhì)生產(chǎn)力的綠色意蘊(yùn)
- 智能制造技術(shù)在工業(yè)設(shè)計(jì)中的應(yīng)用
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024年參考題庫含答案解析
- 吉林省吉林市普通中學(xué)2024-2025學(xué)年高三上學(xué)期二模試題 數(shù)學(xué)
- 2024年江西建設(shè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2025年AM5裝置Modbus通訊規(guī)約說明V2.0-20171127
- 2025年昆明市公安局招考文職人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 河北省高等職業(yè)院校技能大賽關(guān)務(wù)實(shí)務(wù)賽項(xiàng)參考試題及答案
- 黔源電力筆試內(nèi)容
- 草坪露營地規(guī)劃設(shè)計(jì)
- 運(yùn)灰安全管理制度模版(2篇)
評(píng)論
0/150
提交評(píng)論