一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

java語(yǔ)言

Java初始化和回收的面試題9個(gè)

時(shí)間:2025-03-12 23:52:42 java語(yǔ)言 我要投稿
  • 相關(guān)推薦

精選Java初始化和回收的面試題9個(gè)

  Java的初始化和回收相關(guān)知識是公司在面試開(kāi)發(fā)人員時(shí)?疾斓膯(wèn)題,以下是百分網(wǎng)小編搜索整理的關(guān)于精選Java初始化和回收的面試題9個(gè),供參考借鑒,希望對大家有所幫助!想了解更多相關(guān)信息請持續關(guān)注我們應屆畢業(yè)生考試網(wǎng)!

精選Java初始化和回收的面試題9個(gè)

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

  通過(guò)重載方法的參數類(lèi)型和順序來(lái)進(jìn)行區分的。

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

  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沒(méi)有問(wèn)題,因為傳遞的參數50是int型的,而接收方參數是long型的,小范圍可以自動(dòng)轉型為大范圍的數據類(lèi)型;testFloat不會(huì )通過(guò)編譯,因為傳遞的參數1.5是double類(lèi)型的,而接收方參數是float類(lèi)型的,大范圍轉型為小范圍數據類(lèi)型需要顯式轉換,即改為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();不能編譯通過(guò)。

  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)");

  }

  }

  在一個(gè)構造器中調用其它構造器時(shí),需要使用this關(guān)鍵字進(jìn)行調用,如this();在一個(gè)構造器中可調用僅一個(gè)其它構造器,并且調用其它構造器的語(yǔ)句需放在調用者(即發(fā)出調用行為的構造器)語(yǔ)句塊的第一行。

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

  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;這個(gè)語(yǔ)句而言,它并未改變實(shí)例變量i的值,且i的默認值為0,因此結果也為0,若需要改變實(shí)例變量i的值,需要改為this.i = i;

  6.在一個(gè)類(lèi)中,聲明了若干個(gè)static方法和非static方法,請談?wù)劼暶鞯膕tatic方法是否能訪(fǎng)問(wèn)聲明的非static方法,說(shuō)明理由?

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

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

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

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

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

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

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

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

  停止復制:在垃圾回收機制運行時(shí),程序需要停止運行,將每個(gè)活動(dòng)的對象由一個(gè)堆轉移到另一個(gè)堆,留下的垃圾會(huì )被回收。

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

【Java初始化和回收的面試題9個(gè)】相關(guān)文章:

Java類(lèi)和對象的初始化順序09-13

Java內存回收07-17

總結Java垃圾回收器的方法和原理06-17

Java面試題(精選)06-30

java面試題05-20

Java繼承結構中類(lèi)的初始化10-09

Java內存回收相關(guān)知識10-09

java垃圾回收機制06-28

java垃圾回收算法講解08-27

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看