1.java的"一次編寫,處處運行"如何實現?: 答:java之所有能實現一次編譯,到處運行,是因為java在每個系統平臺上都有java虛擬機(jvm),java編譯的中間文件class是由java虛擬機在運行時動態轉換為對應平臺的機器代碼 2.描述jvm的運行原理: 答: Java平臺由Java虛 ...
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(不同參數即可)。
每一個類必須有自己的構造函數,在創建對象時自動調用,如果添加有參構造函數後,預設無參構造函數則被覆蓋。子類不會覆蓋父類的構造函數,但是在創建子類對象的時候,會自動調用父類構造函數。