更新時間:2020-07-08 15:33:31 來源:動力節點 瀏覽2460次
1.什么是Java虛擬機(JVM)?為什么Java被稱作是“平臺無關的編程語言”?
Java虛擬機是一個可以執行Java字節碼的虛擬機進程。Java源文件被編譯成能被Java虛擬機執行的字節碼文件。
Java被設計成允許應用程序可以運行在任意的平臺,而不需要程序員為每一個平臺單獨重寫或者是重新編譯。Java虛擬機讓這個變為可能,因為它知道底層硬件平臺的指令長度和其他特性。
2.JDK、JRE、JVM分別是什么關系?
JDK即為Java開發工具包,包含編寫Java程序所必須的編譯、運行等開發工具以及JRE。開發工具如:用于編譯Java程序的javac命令、用于啟動JVM運行Java程序的Java命令、用于生成文檔的Javadoc命令以及用于打包的jar命令等等。
JRE即為Java運行環境,提供了運行Java應用程序所必須的軟件環境,包含有Java虛擬機(JVM)和豐富的系統類庫。系統類庫即為Java提前封裝好的功能類,只需拿來直接使用即可,可以大大的提高開發效率。
JVM即為Java虛擬機,提供了字節碼文件(.class)的運行環境支持。簡單說,就是JDK包含JRE包含JVM。
3.Java支持的數據類型有哪些?
Java支持的數據類型包括基本數據類型和引用類型。基本數據類型如下。
整數值型:byte,short,int,long
字符型:char
浮點類型:float,double
布爾型:boolean
整數默認int型,小數默認是double型。Float和long類型的必須加后綴。比如float f=100f。
首先知道String是引用類型不是基本類型,引用類型聲明的變量是指該變量在內存中實際存儲的是一個引用地址,實體在堆中。引用類型包括類、接口、數組等。String類還是final修飾的。
4.什么是自動拆裝箱?
自動裝箱和拆箱就是基本類型和引用類型之間的轉換,至于為什么要轉換,因為基本類型轉換為引用類型后,就可以new對象,從而調用包裝類中封裝好的方法進行基本類型之間的轉換或者toString(當然用類名直接調用也可以,便于一眼看出該方法是靜態的),還有就是如果集合中想存放基本類型,泛型的限定類型只能是對應的包裝類型。
5.什么是面向對象?
面向對象是一種思想,世間萬物都可以看做一個對象,這里只討論面向對象編程(OOP),Java是一個支持并發、基于類和面向對象的計算機編程語言,面向對象軟件開發具有以下優點:代碼開發模塊化,更易維護和修改;代碼復用性強;增強代碼的可靠性和靈活性;增加代碼的可讀性。
6.面向對象的四大基本特性?
抽象:提取現實世界中某事物的關鍵特性,為該事物構建模型的過程。對同一事物在不同的需求下,需要提取的特性可能不一樣。得到的抽象模型中一般包含:屬性(數據)和操作(行為)。這個抽象模型我們稱之為類,對類進行實例化得到對象。
封裝:封裝可以使類具有獨立性和隔離性,保證類的高內聚。只暴露給類外部或者子類必須的屬性和操作。類封裝的實現依賴類的修飾符(public、protected和private等)。
繼承:對現有類的一種復用機制。一個類如果繼承現有的類,則這個類將擁有被繼承類的所有非私有特性(屬性和操作)。這里指的繼承包含:類的繼承和接口的實現。
多態:多態是在繼承的基礎上實現的。多態的三個要素:繼承、重寫和父類引用指向子類對象。父類引用指向不同的子類對象時,調用相同的方法,呈現出不同的行為,就是類多態特性。多態可以分成編譯時多態和運行時多態。
抽象、封裝、繼承和多態是面向對象的基礎。
7.&與&&的區別?
&運算符有兩種用法:(1)按位與,(2)邏輯與。&&運算符是短路與運算。
邏輯與跟短路與的差別是非常巨大的,雖然二者都要求運算符左右兩端的布爾值都是true整個表達式的值才是true。&&之所以稱為短路運算是因為,如果&&左邊的表達式的值是false,右邊的表達式會被直接短路掉,不會進行運算。
很多時候我們可能都需要用&&而不是&,例如在驗證用戶登錄時判定用戶名不是null而且不是空字符串,應當寫為:
1username!=null&&!username.equals(“”)
二者的順序不能交換,更不能用&運算符,因為第一個條件如果不成立,根本不能進行字符串的equals比較,否則會產生NullPointerException異常。
注意:邏輯或運算符(|)和短路或運算符(||)的差別也是如此。
8.什么是值傳遞和引用傳遞?
值傳遞是對基本型變量而言的,傳遞的是該變量的一個副本,改變副本不影響原變量。
引用傳遞一般是對于對象型變量而言的,傳遞的是該對象地址的一個副本,并不是原對象本身。一般認為,Java內的傳遞都是值傳遞,Java中實例對象的傳遞是引用傳遞。
9.是否可以在static環境中訪問非static變量?
static變量在Java中是屬于類的,它在所有的實例中的值是一樣的。當類被Java虛擬機載入的時候,會對static變量進行初始化。如果你的代碼嘗試不用實例來訪問非static的變量,編譯器會報錯,因為這些變量還沒有被創建出來,還沒有跟任何實例關聯上。
10.Java中的方法覆蓋(Overriding)和方法重載(Overloading)是什么意思?
Java中的方法重載發生在同一個類里面兩個或者是多個方法的方法名相同但是參數不同的情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,參數列表和返回類型。覆蓋者可能不會限制它所覆蓋的方法的訪問。
以上就是動力節點java培訓機構的小編針對“Java基礎測試面試題,面試官必問”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習