日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA面试常考系列一

發(fā)布時(shí)間:2023/12/3 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA面试常考系列一 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自?JAVA面試常考系列一

題目一

什么是Java虛擬機(jī)?為什么Java被稱為平臺(tái)無關(guān)的編程語言?

java虛擬機(jī)是一個(gè)可以執(zhí)行字節(jié)碼文件(.class)的虛擬機(jī)進(jìn)程。

為什么java與平臺(tái)無關(guān)呢?因?yàn)?/span>java源程序(.java)首先被編譯器編譯成字節(jié)碼文件(.class)然后java虛擬機(jī)將字節(jié)碼文件解釋成機(jī)器碼。而不同的操作平臺(tái),裝有不同的java虛擬機(jī)(JVM),能夠?qū)⑾嗤淖止?jié)碼文件(.class)解釋為對(duì)應(yīng)平臺(tái)所需要的機(jī)器碼。所以,java是一種與平臺(tái)無關(guān)的編程語言。


題目二

JDK和JRE的區(qū)別是什么?

JDK是完整的Java軟件開發(fā)包,包括編譯器、Java運(yùn)行時(shí)環(huán)境和其它的工具(比如:JavaDoc,Java調(diào)試器),可以讓開發(fā)者開發(fā)、編譯、執(zhí)行Java應(yīng)用程序。

JRE是Java運(yùn)行時(shí)環(huán)境,它是JDK的一個(gè)組成部分,只包括Java虛擬機(jī)、Java核心類庫和支持文件。?


題目三

否在static環(huán)境中訪問非static變量?

static變量在Java中是屬于類的,它在所有的實(shí)例中的值是一樣的。當(dāng)類被Java虛擬機(jī)載入的時(shí)候,會(huì)對(duì)static變量進(jìn)行初始化。如果代碼嘗試不用實(shí)例來訪問非static的變量,編譯器會(huì)報(bào)錯(cuò),因?yàn)檫@些變量還沒有被創(chuàng)建出來,還沒有跟任何實(shí)例關(guān)聯(lián)上。?


題目四

Java支持的數(shù)據(jù)類型有哪些?什么是自動(dòng)拆裝箱?

支持類型


Java支持8種基本數(shù)據(jù)類型:

其中整數(shù)值型有四種byte,short,int,long,

字符型一種char

浮點(diǎn)類型兩種float,double

布爾型一種boolean

整數(shù)默認(rèn)int型,小數(shù)默認(rèn)是double型。Float和long類型的必須加后綴。

Java還支持引用數(shù)據(jù)類型,引用類型包括類、接口、數(shù)組等。引用類型聲明的變量是指該變量在內(nèi)存中實(shí)際存儲(chǔ)的是一個(gè)引用地址,實(shí)體在堆中。而包裝類就屬于引用類型

自動(dòng)拆裝箱


自動(dòng)裝箱和拆箱就是基本類型和引用類型之間的轉(zhuǎn)換,轉(zhuǎn)換的目的是因?yàn)榛绢愋娃D(zhuǎn)換為引用類型后,就可以new對(duì)象,從而調(diào)用包裝類中封裝好的方法進(jìn)行基本類型之間的轉(zhuǎn)換或者toString,還有就是如果集合中想存放基本類型,泛型的限定類型只能是對(duì)應(yīng)的包裝類型。


題目五

“static”關(guān)鍵字是什么意思?Java中是否可以覆蓋(override)一個(gè)private或者是static的方法?

“static”關(guān)鍵字表明一個(gè)成員變量或者是成員方法可以在沒有所屬類的實(shí)例變量的情況下被訪問。

Java中static方法不能被覆蓋,因?yàn)閟tatic方法是編譯時(shí)靜態(tài)綁定的,而方法覆蓋是基于運(yùn)行時(shí)動(dòng)態(tài)綁定的。static方法跟類的任何實(shí)例都不相關(guān),所以概念上不適用。

java中也不可以覆蓋private的方法,因?yàn)閜rivate修飾的變量和方法只能在當(dāng)前類中使用,如果是其他的類繼承當(dāng)前類是不能訪問到private變量或方法的,當(dāng)然也不能覆蓋。


題目六

Java中的方法覆蓋(Overriding)和方法重載(Overloading)是什么意思?

方法覆蓋

Java中方法覆蓋(Overriding)是指子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,參數(shù)列表和返回類型。覆蓋者可能不會(huì)限制它所覆蓋的方法的訪問。重寫方法不能為private,運(yùn)用中最典型的就是對(duì)接口方法的覆蓋。

方法重載

Java中方法重載Overloading)就是具有相同函數(shù)名,返回類型可以不同,參數(shù)個(gè)數(shù)、順序、類型不同的函數(shù)。Overloading發(fā)生在同一個(gè)類里面具有兩個(gè)或者是更多的函數(shù)具有相同名字的情況下。


題目七

Java中,什么是構(gòu)造函數(shù)?什么是構(gòu)造函數(shù)重載?什么是復(fù)制構(gòu)造函數(shù)?

構(gòu)造函數(shù)是對(duì)象被創(chuàng)建時(shí)初始化對(duì)象的成員方法,它具有和它所在的類完全一樣的名字。構(gòu)造函數(shù)只能有入口參數(shù),沒有返回類型,因?yàn)橐粋€(gè)類的構(gòu)造方法的返回類就是類本身。構(gòu)造函數(shù)定義后,創(chuàng)建對(duì)象時(shí)就會(huì)自動(dòng)調(diào)用它,對(duì)新創(chuàng)建的對(duì)象分配內(nèi)存空間和初始化。每一個(gè)類都有構(gòu)造函數(shù)。在程序員沒有給類提供構(gòu)造函數(shù)的情況下,Java編譯器會(huì)為這個(gè)類創(chuàng)建一個(gè)默認(rèn)的構(gòu)造函數(shù)

方法名稱相同,參數(shù)項(xiàng)不相同。那么認(rèn)為一個(gè)方法是另一個(gè)方法的重載方法。重載只跟參數(shù)有關(guān),與返回類型無關(guān)。方法名和參數(shù)相同而返回類型不相同,不能說是重載。

構(gòu)造方法重載是方法重載的一個(gè)典型的特例。參數(shù)列表不同。


題目八

Java為什么不支持多繼承?

Java中類不支持多繼承,因?yàn)閮蓚€(gè)繼承于中一個(gè)父類的子類,被同一個(gè)子類繼承時(shí),會(huì)出現(xiàn)方法的引用歧義,所以Java中只支持單繼承,即一個(gè)類只有一個(gè)父類。

java中的接口支持多繼承,即一個(gè)子接口可以有多個(gè)父接口。接口的作用是用來擴(kuò)展對(duì)象的功能,一個(gè)子接口繼承多個(gè)父接口,說明子接口擴(kuò)展了多個(gè)功能,當(dāng)類實(shí)現(xiàn)接口時(shí),類就擴(kuò)展了相應(yīng)的功能。


題目九

什么是值傳遞和引用傳遞?

值傳遞


值傳遞:(形式參數(shù)類型是基本數(shù)據(jù)類型):方法調(diào)用時(shí),實(shí)際參數(shù)把它的值傳遞給對(duì)應(yīng)的形式參數(shù),形式參數(shù)只是用實(shí)際參數(shù)的值初始化自己的存儲(chǔ)單元內(nèi)容,是兩個(gè)不同的存儲(chǔ)單元,所以方法執(zhí)行中形式參數(shù)值的改變不影響實(shí)際參數(shù)的值。

引用傳遞


引用傳遞(形式參數(shù)類型是引用數(shù)據(jù)類型參數(shù)):也稱為傳地址。方法調(diào)用時(shí),實(shí)際參數(shù)是對(duì)象(或數(shù)組),這時(shí)實(shí)際參數(shù)與形式參數(shù)指向同一個(gè)地址,在方法執(zhí)行中,對(duì)形式參數(shù)的操作實(shí)際上就是對(duì)實(shí)際參數(shù)的操作,這個(gè)結(jié)果在方法結(jié)束后被保留了下來,所以方法執(zhí)行中形式參數(shù)的改變將會(huì)影響實(shí)際參數(shù)?


題目十

接口和抽象類的區(qū)別是什么?

接口是對(duì)動(dòng)作的抽象,抽象類是對(duì)根源的抽象。

抽象類表示的是,這個(gè)對(duì)象是什么。接口表示的是,這個(gè)對(duì)象能做什么。比如,大貓小貓來定義兩個(gè)類,他們的抽象類是。說明,他們都是可以奔跑,狗也可以奔跑,把奔跑定義成一個(gè)接口,然后讓這些類去實(shí)現(xiàn)它。

所以,在高級(jí)語言上,一個(gè)類只能繼承一個(gè)類(抽象類)(正如不可能同時(shí)是動(dòng)物植物),但是可以實(shí)現(xiàn)多個(gè)接口(吃奔跑口、跳躍接口)。

區(qū)別如下:

1、抽象類和接口都不能直接實(shí)例化,如果要實(shí)例化,抽象類變量必須指向?qū)崿F(xiàn)所有抽象方法的子類對(duì)象,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類對(duì)象。

2、抽象類要被子類繼承,接口要被類實(shí)現(xiàn)。

3、接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實(shí)現(xiàn)

4、接口里定義的變量只能是公共的靜態(tài)的常量,抽象類中的變量是普通變量。

5、抽象類里的抽象方法必須全部被子類所實(shí)現(xiàn),如果子類不能全部實(shí)現(xiàn)父類抽象方法,那么該子類只能是抽象類。同樣,一個(gè)實(shí)現(xiàn)接口的時(shí)候,如不能全部實(shí)現(xiàn)接口方法,那么該類也只能為抽象類。

6、抽象方法只能申明,不能實(shí)現(xiàn),接口是設(shè)計(jì)的結(jié)果 ,抽象類是重構(gòu)的結(jié)果

7、抽象類里可以沒有抽象方法

8、如果一個(gè)類里有抽象方法,那么這個(gè)類只能是抽象類

9、抽象方法要被實(shí)現(xiàn),所以不能是靜態(tài)的,也不能是私有的。

10、接口可繼承接口,并可多繼承接口,但類只能單根繼承。


總結(jié)

以上是生活随笔為你收集整理的JAVA面试常考系列一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。