91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java初始化和回收的面試題有哪些

發布時間:2022-01-06 21:05:14 來源:億速云 閱讀:176 作者:iii 欄目:編程語言

這篇文章主要講解了“Java初始化和回收的面試題有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java初始化和回收的面試題有哪些”吧!

1.Java中是如何區分重載方法的?

通過重載方法的參數類型和順序來進行區分的。

注意:若參數類型和順序均相同時,不管參數名是否相同,編譯器均會報錯,提示方法已經被定義。且不能根據返回值類型來區分,如果根據返回值來區分的話,有時程序里調用方法時并不需要返回值,那么程序都無法確定該調用那個重載方法。

2.閱讀以下程序,解釋其中的錯誤。

public static void testLong(long i) {         System.out.println("test long");     }          public static void testFloat(float i) {         System.out.println("test float");     }     public static void main(String[] args) {         testLong(50);         testFloat(1.5); }

testLong沒有 問題,因為傳遞的參數50是int型的,而接收方參數是long型的,小范圍可以自動轉型為大范圍的數據類型;testFloat不會通過編譯,因為傳遞 的參數1.5是double類型的,而接收方參數是float類型的,大范圍轉型為小范圍數據類型需要顯式轉換,即改為testFloat(1.5f)。

3.閱讀以下程序,解釋其中的錯誤。

public static class A {         A(int i) {             System.out.println("A(int i)");         }     }     public static void main(String[] args) {         A a = new A(); }

在定義了自定義構造器后,若要使用默認構造器,則需要顯式指定默認構造器,否則A a = new A();不能編譯通過。

4.閱讀以下程序,解釋其中的錯誤

public static class A {         A() {             System.out.println("A()");         }         A(int i) {             System.out.println("A(int i)");         }         A(int i, int j) {             A();             A(i);             System.out.println("A(int i, int j)");         } }

在一個構造器中調用其它構造器時,需要使用this關鍵字進行調用,如this();在一個構造器中可調用僅一個其它構造器,并且調用其它構造器的語句需放在調用者(即發出調用行為的構造器)語句塊的***行。

5.閱讀以下程序,寫出執行結果。

public static class A {         private int i;         private String j;         int getI() {             return i;         }         String getJ() {             return j;         }         A(int i) {             i = i;         }         A(String j) {             this.j = j;         }     }     public static void main(String[] args) {         System.out.println(new A(5).getI());         System.out.println(new A("hello").getJ()); }

執行結果為:

0

hello

對于i = i;這個語句而言,它并未改變實例變量i的值,且i的默認值為0,因此結果也為0,若需要改變實例變量i的值,需要改為this.i = i;

6.在一個類中,聲明了若干個static方法和非static方法,請談談聲明的static方法是否能訪問聲明的非static方法,說明理由?

static方法不能訪問非static方法,因為static方法是屬于這個類本身的一個方法,在編譯期間就已經確定了;而非static方法是屬于這個類的對象的方法,需要在實例化之后才能訪問到。若在static方法中訪問非static方法,將不能通過編譯。

7.static關鍵字為何不能修飾局部變量?

static 關鍵字修飾的變量或方法是屬于類的,在編譯時就已經確定了;而普通變量或方法是屬于該由類生成的對象,需要在實例化后才能確定。因此,若static關鍵 字修飾了方法的局部變量,一方面方法需要在實例化之后才能確定,另一方面static修飾的變量需要在編譯時確定,這就會導致矛盾。

8.finalize()有何用途?什么情況下需要調用這個函數?

在需要釋放內存的地方調用finalize(),則在下一輪垃圾回收時會回收占用的內存,一般情況下不需要顯式調用此函數。

垃 圾回收器只能回收那些由new關鍵字創建的對象所占用的內存,那么有些不是通過這種方式(比如調用C++本地方法)所占用的內存如何回收呢?那么就需要使 用finalize()了。由于C++中需要使用free()函數來釋放內存,所以Java程序在調用C++時需要調用finalize()方法來釋放內 存。

9.列出并簡要解釋幾種常見垃圾回收技術。

引用計數:每個對象都包含了一個引用計數器,每被引用一次,計數器都加1,引用者被置為null或者銷毀,計數器就減1。垃圾收集器進行輪詢,一旦發現計數器的值小于1,就回收該對象占用的內存。

停止復制:在垃圾回收機制運行時,程序需要停止運行,將每個活動的對象由一個堆轉移到另一個堆,留下的垃圾會被回收。

標記清除:從堆棧和靜態存儲區域開始,尋找到活的對象就對其進行標記,所有的標記過程完成后,就對垃圾進行回收。

感謝各位的閱讀,以上就是“Java初始化和回收的面試題有哪些”的內容了,經過本文的學習后,相信大家對Java初始化和回收的面試題有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

徐闻县| 克拉玛依市| 通山县| 常德市| 绍兴县| 繁昌县| 怀宁县| 林口县| 武清区| 榆林市| 咸宁市| 六安市| 札达县| 金乡县| 济南市| 和政县| 襄汾县| 鄄城县| 德格县| 崇仁县| 贵南县| 曲沃县| 通州市| 信丰县| 南澳县| 湘乡市| 雅江县| 沙河市| 启东市| 顺义区| 财经| 邯郸县| 晋城| 和静县| 涿鹿县| 正镶白旗| SHOW| 双桥区| 平度市| 娄烦县| 云南省|