1.java的"一次撰寫,處處運行"如何實作?:
答:java之所有能實作一次編譯,到處運行,是因為java在每個系統平臺上都有java虛擬機(jvm),java編譯的中間檔案class是由java虛擬機在運行時動態轉換為對應平臺的機器代碼
2.描述jvm的運行原理:
答: Java平臺由Java虛擬機和Java應用程式介面搭建,Java語言則是進入這個平臺的通道,用Java語言撰寫并編譯的程式可以運行在這個平臺上,這個平臺的結構如下圖所示: 運行期環境代表著Java平臺,開發人員撰寫Java代碼(.java檔案),然后將之編譯成位元組碼(.class檔案),再然后位元組碼被裝入記憶體,一旦位元組碼進入虛擬機,它就會被解釋器解釋執行,或者是被即時代碼發生器有選擇的轉換成機器碼執行,

3.為什么Java沒有全域變數:
Global variables(全域變數) 是指可以全域訪問的變數, Java不支持全域變數,原因如下:
- 全域變數破壞了參考的透明性,
- 全域變數制造了命名空間沖突,
可以使用properties類將想要全域有效的變數值寫在properties檔案中,那么在何處用時都從此properties檔案中讀取這個變數的值就可以了,此值在任何時候都可以修改的
說明:我們平時在類中宣告的只是相對類而言是全域變數,不是真正意義的全域變數
4.說明一下public static void main(String args[])這段宣告里每個關鍵字的作用,:
Public 是一個訪問權限(訪問修飾符)公共
static 修飾的成員稱為類成員或者靜態成員
void 當方法定義時用void修飾時,表示沒有回傳值
String 類來創建和操作字串
5.java是否存在記憶體泄漏?:
java中記憶體泄露的發生場景,通俗地說,就是程式員可能創建了一個物件,以后一直不再使用這個物件,這個物件卻一直被參考,即這個對象無用但是卻無法被垃圾回收器回收的,這就是java中的記憶體泄露,一定要讓程式將各種分支情況都完整執行到程式結束,然后看某個物件是否被使用過,如果沒有,則才能判定這個物件屬于記憶體泄露,
6.==與equals的區別:
"= ="除了比較基本資料之外都是比較的記憶體地址
"equals"除了比較沒有重寫equals方法的類之外都是比較的內容
7.java中有幾種型別的流:
Java中的流分為兩種,一種是位元組流,另一種是字符流,分別由四個抽象類來表示(每種流包括輸入和輸出兩種所以一共四個):InputStream,OutputStream,Reader,Writer,
8.如何使用java代碼列出一個目錄下的所有檔案:
File file=new File("H:\\"); for(File temp:file.listFiles()){ if(temp.isFile()){ System.out.println(temp.toString()); } }
9.&和&&的區別:
1、&與&&都可以用作邏輯與的運算子,當兩邊的結果都為true時,運算結果才為true,否則只要有一方運算結果是false,運算結果就為false,
2、&&在開發程序中用到的概率比&大,因為&&具有短路的功能,只要第一個運算式是false,就不會再進行判斷,例如:if(str!=null && !str.equals("")){}
當strnull時,后面的運算式就不會繼續執行,但是
if(str!=null & !str.equals("")){}當strnull時,程式會報空指標例外,因為&不具有短路的功能,
3、&同時也是位運算子,就是我們通常所說的按位與運算,當&的左右兩邊都是Boolean型運算式時或Boolean值時,就執行按位與運算,
10.構造器(constructor)是否可被重寫(override),其規范是什么?:
構造器(構造方法)Constructor不能被繼承,因此不能重寫Override,但可以被多載Overload(不同引數即可),
每一個類必須有自己的建構式,在創建物件時自動呼叫,如果添加有參建構式后,默認無參建構式則被覆寫,子類不會覆寫父類的建構式,但是在創建子類物件的時候,會自動呼叫父類建構式,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/458646.html
標籤:其他
