2020年整理Java面試題_第1頁(yè)
2020年整理Java面試題_第2頁(yè)
2020年整理Java面試題_第3頁(yè)
2020年整理Java面試題_第4頁(yè)
2020年整理Java面試題_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1. JDK禾口 JRE有什么區(qū)別?JDK: Java Development Kit 的簡(jiǎn)稱(chēng),java 開(kāi)發(fā)工具包,提供了 java 的開(kāi)發(fā)環(huán)境和運(yùn)行環(huán)境。JRE: Java Run time En viro nment的簡(jiǎn)稱(chēng),java 運(yùn)行環(huán)境,為 java 的運(yùn)行提供了所需環(huán)境。具體來(lái)說(shuō)JDK其實(shí)包含了 JRE,同時(shí)還包含了編譯java源碼的編譯器javac,還包含了很多java程序調(diào)試和分 析的工具。簡(jiǎn)單來(lái)說(shuō):如果你需要運(yùn)行java程序,只需安裝JRE就可以了,如果你需要編寫(xiě) java程序,需要安裝JDK。2.= 和equals 的區(qū)別是什么?=解讀對(duì)于基本類(lèi)型和引用類(lèi)型 =的作用效果

2、是不同的,如下所示:基本類(lèi)型:比較的是值是否相同; 引用類(lèi)型:比較的是引用是否相同;代碼示例:Stri ng x = "stri ng"Stri ng y = "stri ng"Stri ng z = new Strin g("stri ng");System.out.println(x=y); / trueSystem.out.println(x=z); / falseSystem.out.pri ntl n(x.equals(y); / true System.out.pri ntl n( x.equals(z); / true

3、復(fù)制代碼代碼解讀:因?yàn)閄和y指向的是同一個(gè)引用,所以 =也是true , 而new String()方法則重寫(xiě)開(kāi)辟了內(nèi)存空間, 所以=結(jié)果為false , 而equals比較的一直是值,所以結(jié)果都為 true。equals 解讀equals本質(zhì)上就是=,只不過(guò)String和Integer等重寫(xiě)了equals方法,把它變成了值比較??聪旅娴拇a就明白了。首先來(lái)看默認(rèn)情況下equals比較一個(gè)有相同值的對(duì)象,代碼如下:class Cat public Cat(Stri ng n ame) this .n ame = n ame;private String n ame;public Stri ng

4、 getName() return n ame;public void setName(Stri ng n ame) this .n ame = n ame;Cat c1 = new Cat(" 提莫");Cat c2 = new Cat(" 提莫");System.out.pri ntl n(c1.equals(c2); / false復(fù)制代碼輸出結(jié)果出乎我們的意料,竟然是false ?這是怎么回事,看了 equals源碼就知道了,源碼如下:public boolea n equals(Object obj) return (this = obj);復(fù)

5、制代碼原來(lái)equals本質(zhì)上就是 =那問(wèn)題來(lái)了,兩個(gè)相同值的碼如下:Stri ng 對(duì)象,為什么返回的是true ? 代String s1 = new String("阿莫");Stri ng s2 = new Stri ng("阿莫");System.out.println(s1.equals(s2); / true復(fù)制代碼代碼如下:同樣的,當(dāng)我們進(jìn)入String的equals方法,找到了答案,public boolea n equals(Object anO bject) if (this = anObject) return true;if (an

6、O bject in sta nceof String) Stri ng ano therStri ng = (Stri ng)a nObject; int n = value .len gth;if (n = anotherString.value.length) char v1 = value;char v2 = ano therStri ng.value;int i = 0;while (n- != 0) if (v1i != v2i) return false;i+; return true;return false;復(fù)制代碼原來(lái)是String重寫(xiě)了 Object的equals方法,把

7、引用比較改成了值 比較。總結(jié):=對(duì)于基本類(lèi)型來(lái)說(shuō)是值比較,對(duì)于引用類(lèi)型來(lái)說(shuō)是比較的是 引用;而equals默認(rèn)情況下是引用比較,只是很多類(lèi)重新了equals方法,比如String、Integer等把它變成了值比較,所以一般情況下 equals比較的是值是否相等。3.兩個(gè)對(duì)象的 hashCode() 相同,貝U equals()也一定為true,對(duì)嗎?不對(duì),兩個(gè)對(duì)象的 hashCode()相同,equals()不一定true。代碼示例:Stri ng str1 =" 通話"Stri ng str2 =" 重地"System.out.println(Stri

8、ng.format("str1: %d | str2 : %d",str1.hashCode(),str2.hashCode();System.out.pri ntln( str1.equals(str2);復(fù)制代碼執(zhí)行的結(jié)果:str1 : 1仃9395 | str2 : 1仃9395false代碼解讀:很顯然“通話”和“重地”的hashCode()相同,然而equals() 則為false ,因?yàn)樵谏⒘斜碇?,hashCode()相等即兩個(gè)鍵值對(duì)的哈希值 相等,然而哈希值相等,并不一定能得出鍵值對(duì)相等。4. final在java中有什么作用?final修飾的類(lèi)叫最終類(lèi),該類(lèi)

9、不能被繼承。final修飾的方法不能被重寫(xiě)。final修飾的變量叫常量,常量必須初始化,初始化之后值就不 能被修改。5. java 中的 Math.round(-1.5)等于多少?等于-1,因?yàn)樵跀?shù)軸上取值時(shí),中間值(0.5 )向右取整,所以正 0.5 是往上取整,負(fù)0.5是直接舍棄。6. Stri ng屬于基礎(chǔ)的數(shù)據(jù)類(lèi)型嗎?String 不屬于基礎(chǔ)類(lèi)型,基礎(chǔ)類(lèi)型有 8種:byte、boolean、char、 short、int、float、long、double,而 String 屬于對(duì)象。7. java中操作字符串都有哪些類(lèi)?它們之間有什么區(qū)別?操作字符串的類(lèi)有:String、String

10、Buffer 、StringBuilder 。String 禾口 StringBuffer、StringBuilder的區(qū)別在于 String 聲明的是不可變的對(duì)象,每次操作都會(huì)生成新的Stri ng對(duì)象,然后將指針指向新的String 對(duì)象,而 StringBuffer、StringBuilder可以在原有對(duì)象的基礎(chǔ)上進(jìn)行操作,所以在經(jīng)常改變字符串內(nèi)容的情況下最好不要使用 String。StringBuffer 和 StringBuilder 最大的區(qū)別在于,StringBuffer 是線 程安全的,而 Stri ngBuilder 是非線程安全的,但 Stri ngBuilder 的 性能

11、卻高于StringBuffer,所以在單線程環(huán)境下推薦使用Stri ngBuilder,多線程環(huán)境下推薦使用Stri ngBuffer。8. String str="i" 與 String str= new String("i") 一樣嗎?不一樣,因?yàn)閮?nèi)存的分配方式不一樣。String str="i"的方式,java虛擬機(jī)會(huì)將其分配到常量池中;而String str= new String("i")則會(huì)被分到堆內(nèi)存中。9. 如何將字符串反轉(zhuǎn)?使用 StringBuilder 或者 stringBuffer的 rev

12、erse。方法。示例代碼:/ Stri ngBuffer reverseStri ngBuffer stri ngBuffer = new Stri ngBuffer();stri ngBuffer.appe nd("abcdefg");System.out.pri ntl n( stri ngBuffer.reverse(); / gfedcba/ Stri ngBuilder reverseStringBuilder stringBuilder = new StringBuilder();stri ngBuilder.appe nd("abcdefg"

13、;);System.out.pri ntl n(stri ngBuilder.reverse(); / gfedcba復(fù)制代碼10. String 類(lèi)的常用方法都有那些?? indexOf():返回指定字符的索引? charAt():返回指定索引處的字符。? replace。:字符串替換。? trim():去除字符串兩端空白。? split():分割字符串,返回一個(gè)分割后的字符串?dāng)?shù)組。? getBytes():返回字符串的byte 類(lèi)型數(shù)組。? length():返回字符串長(zhǎng)度。? toLowerCase():將字符串轉(zhuǎn)成小寫(xiě)字母。? toUpperCase():將字符串轉(zhuǎn)成大寫(xiě)字符。? su

14、bstring():截取字符串。? equals():字符串比較。11. 抽象類(lèi)必須要有抽象方法嗎?示例代碼:abstract class Cat public static void sayHi() System.out.pri ntln( "hi");復(fù)制代碼上面代碼,抽象類(lèi)并沒(méi)有抽象方法但完全可以正常運(yùn)行。12. 普通類(lèi)和抽象類(lèi)有哪些區(qū)別?抽象類(lèi)不能直普通類(lèi)不能包含抽象方法,抽象類(lèi)可以包含抽象方法。接實(shí)例化,普通類(lèi)可以直接實(shí)例化。13.抽象類(lèi)能使用final修飾嗎?不能,定義抽象類(lèi)就是讓其他類(lèi)繼承的,如果定義為final該類(lèi)就不能被繼承,這樣彼此就會(huì)產(chǎn)生矛盾,所以fi

15、nal不能修飾抽象類(lèi),如下圖所示,編輯器也會(huì)提示錯(cuò)誤信息:朋gQ class Cat |II鉤迅I combination of modifiers; rabtractr gnd 'final'14. 接口和抽象類(lèi)有什么區(qū)別?實(shí)現(xiàn):抽象類(lèi)的子類(lèi)使用 exte nds來(lái)繼承;接口必須使用impleme nts來(lái)實(shí)現(xiàn)接口。構(gòu)造函數(shù):抽象類(lèi)可以有構(gòu)造函數(shù);接口不能有。main方法:抽象類(lèi)可以有 main方法,并且我們能運(yùn)行它; 接口不能有 main方法。實(shí)現(xiàn)數(shù)量:類(lèi)可以實(shí)現(xiàn)很多個(gè)接口;但是只 能繼承一個(gè)抽象類(lèi)。訪問(wèn)修飾符:接口中的方法默認(rèn)使用public修飾;抽象類(lèi)中的方法可以是任意

16、訪問(wèn)修飾符。15. java 中10 流分為幾種?按功能來(lái)分:輸入流(in put )、輸出流(output )。按類(lèi)型來(lái)分:字節(jié)流和字符流。字節(jié)流和字符流的區(qū)別是:字節(jié)流按8位傳輸以字節(jié)為單位輸入輸出數(shù)據(jù),字符流按16位傳輸以字符為單位輸入輸出數(shù)據(jù)。16. BIO、NIO、AIO有什么區(qū)別?? BIO : Block IO 同步阻塞式10,就是我們平常使用的傳統(tǒng)10,它的特點(diǎn)是模式簡(jiǎn)單使用方便,并發(fā)處理能力低。? NIO : New IO 同步非阻塞10,是傳統(tǒng)10的升級(jí),客戶端和服務(wù)器 端通過(guò)Channel (通道)通訊,實(shí)現(xiàn)了多路復(fù)用。? AIO : Asynchronous IO 是NIO 的升級(jí),也叫 NI02,實(shí)現(xiàn)了異步 非堵塞I0

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論