日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
9個Java初始化和回收的面試題

Java的初始化和回收相關(guān)知識是公司在面試開發(fā)人員時常考察的問題,這里列出了8大常見的題型。

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計與策劃設(shè)計,重慶網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:重慶等地區(qū)。重慶做網(wǎng)站價格咨詢:13518219792


1.Java中是如何區(qū)分重載方法的?

通過重載方法的參數(shù)類型和順序來進行區(qū)分的。

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

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

  
 
  1. public static void testLong(long i) {
  2.         System.out.println("test long");
  3.     }
  4.     
  5.     public static void testFloat(float i) {
  6.         System.out.println("test float");
  7.     }
  8.     public static void main(String[] args) {
  9.         testLong(50);
  10.         testFloat(1.5);
  11. }

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

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

  
 
  1. public static class A {
  2.         A(int i) {
  3.             System.out.println("A(int i)");
  4.         }
  5.     }
  6.     public static void main(String[] args) {
  7.         A a = new A();
  8. }

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

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

  
 
  1. public static class A {
  2.         A() {
  3.             System.out.println("A()");
  4.         }
  5.         A(int i) {
  6.             System.out.println("A(int i)");
  7.         }
  8.         A(int i, int j) {
  9.             A();
  10.             A(i);
  11.             System.out.println("A(int i, int j)");
  12.         }
  13. }

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

5.閱讀以下程序,寫出執(zhí)行結(jié)果。

  
 
  1. public static class A {
  2.         private int i;
  3.         private String j;
  4.         int getI() {
  5.             return i;
  6.         }
  7.         String getJ() {
  8.             return j;
  9.         }
  10.         A(int i) {
  11.             i = i;
  12.         }
  13.         A(String j) {
  14.             this.j = j;
  15.         }
  16.     }
  17.     public static void main(String[] args) {
  18.         System.out.println(new A(5).getI());
  19.         System.out.println(new A("hello").getJ());
  20. }

執(zhí)行結(jié)果為:

0

hello

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

6.在一個類中,聲明了若干個static方法和非static方法,請談?wù)劼暶鞯膕tatic方法是否能訪問聲明的非static方法,說明理由?

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

7.static關(guān)鍵字為何不能修飾局部變量?

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

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

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

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

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

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

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

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


分享標題:9個Java初始化和回收的面試題
URL鏈接:http://www.dlmjj.cn/article/dhddihh.html