偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

開(kāi)發(fā) 后端
Java的初始化和回收相關(guān)知識(shí)是公司在面試開(kāi)發(fā)人員時(shí)??疾斓膯?wèn)題,這里列出了8大常見(jiàn)的題型。

Java的初始化和回收相關(guān)知識(shí)是公司在面試開(kāi)發(fā)人員時(shí)??疾斓膯?wèn)題,這里列出了8大常見(jiàn)的題型。

[[145373]]


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

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

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

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

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

testLong沒(méi)有 問(wèn)題,因?yàn)閭鬟f的參數(shù)50是int型的,而接收方參數(shù)是long型的,小范圍可以自動(dòng)轉(zhuǎn)型為大范圍的數(shù)據(jù)類(lèi)型;testFloat不會(huì)通過(guò)編譯,因?yàn)閭鬟f 的參數(shù)1.5是double類(lèi)型的,而接收方參數(shù)是float類(lèi)型的,大范圍轉(zhuǎn)型為小范圍數(shù)據(jù)類(lèi)型需要顯式轉(zhuǎn)換,即改為testFloat(1.5f)。

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

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

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

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

  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.         } 

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

5.閱讀以下程序,寫(xiě)出執(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()); 

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

0

hello

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

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

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

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

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

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

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

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

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

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

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

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

責(zé)任編輯:王雪燕 來(lái)源: Sanesee
相關(guān)推薦

2012-02-28 10:04:09

Java

2020-11-02 07:02:10

加載鏈接初始化

2015-09-10 08:46:15

Java面試題

2016-05-05 17:45:43

Spring面試題答案

2017-08-29 14:12:16

Java面試題

2011-06-09 14:13:06

C++JAVA缺省初始化

2012-03-13 13:38:42

Java

2015-08-19 09:35:49

Java main面試題

2009-06-06 18:34:05

java面試題

2009-06-06 18:36:02

java面試題

2019-08-09 09:50:38

Java編程語(yǔ)言面試題

2014-12-02 10:02:30

2015-09-02 09:32:56

java線程面試

2011-06-17 15:29:44

C#對(duì)象初始化器集合初始化器

2019-11-04 13:50:36

Java數(shù)組編程語(yǔ)言

2014-09-19 11:17:48

面試題

2011-07-22 17:46:43

java

2020-06-04 14:40:40

面試題Vue前端

2012-05-23 12:46:53

JavaJava類(lèi)

2019-03-23 20:00:04

面試react.js前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)