1. 程式人生 > >java面試每日十題(四)

java面試每日十題(四)

31、介面是否可繼承(extends)介面?抽象類是否可實現(implements)介面?抽象類是否可繼承具體類(concrete class)?

答:介面可以繼承一個或多個介面,抽象類可以繼承一個類或實現多個介面,抽象類也可以繼承具體類。

32、一個".java"原始檔中是否可以包含多個類(不是內部類)?有什麼限制?

答:可以的。但是隻允許有一個public類,並且類名必須和檔名一致。這樣做的意思是每個編譯單元只有一個公開的介面,如果有多個public類,程式就不知道從哪裡匯入了,編譯器就會報錯。

33、Anonymous Inner Class(匿名內部類)是否可以繼承其它類?是否可以實現介面?

答:匿名內部類是沒有名字的內部類,不存在構造方法,匿名內部類在實現時必須藉助一個類或介面,它本身就繼承了Object類,所以不能繼承其它類或實現介面了。

34、內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?

答:如果不是靜態巢狀類的話,可以隨便訪問沒有限制;如果是靜態巢狀類,那就只能訪問外部類中的靜態成員變數,不可以訪問外部類的普通成員變數。

35、Java 中的final關鍵字有哪些用法?

答:修飾變數:表示變數只能進行一次賦值並且賦值以後不可被修改(常量);

修飾引數:表示在方法中不能改變引數的值;

修飾類:final修飾的類不可被繼承;修飾方法:表示該方法不能被重寫。

36、資料型別之間的轉換:

答:java中有兩種資料型別轉換:自動型別轉換和強制型別轉換。

自動型別轉換是由jvm自動完成的,是由範圍小的資料型別轉換為範圍大的資料型別,即

byte<short(char)<int<long<float<double。注意當整數型別比較大的轉換為小數型別的時候可能會出現資料精度損失。

強制型別轉換要書寫程式碼才能夠完成,是由範圍大的資料型別轉換範圍小的資料型別,即double-float-long-int-short(char)-byte。強制型別轉換很可能存在精度損失,語法格式為:範圍小的型別 引數 = (轉換的型別)需要轉換的值;

37、如何實現字串的反轉及替換?

答:

輸出的結果是:hello ;olleh ;h777o。

38、怎樣將GB2312編碼的字串轉換為ISO-8859-1編碼的字串?

答:需要用到中間輔助類byte[ ],原理是將字串轉化為byte,然後byte轉換成字元串同時轉碼,要注意異常的捕獲。

39、列印昨天的當前時刻。

40、比較一下Java和JavaSciprt。

答:JavaScript與Java是兩個公司開發的不同的兩個產品。Java是SUN公司推出的新一代面向物件的程式設計語言,特別適合於網際網路應用程式開發;而 JavaSciprt是Netscape公司的產品,其目的是為了擴充套件 Netscape 瀏覽器功能,而開發的一種可以嵌入Web頁面中的基於物件和事件驅動的解釋性語言, 它的前身是LiveScript;而Java的前身是Oak語言。下面對兩種語言間的異同作如下比較:

1)基於物件和麵向物件:Java是一種真正的面向物件的語言,即使是開發簡單的程式,必須設計物件;JavaScript是種指令碼語言,它可以用來製作與網路無關的,與使用者互動作用 的複雜軟體。它是一種基於物件(Object-Based)和事件驅動(Event-Driver) 的程式語言。因而它本身提供了非常豐富的內部物件供設計人員使用;

2)解釋和編譯:Java的原始碼在執行之前,必須經過編譯;JavaScript是一種解釋性程式語言,其原始碼不需經過編譯,由瀏覽器解釋執行;

3)強型別變數和型別弱變數:Java採用強型別變數檢查,即所有變數在編譯之前必須作宣告;JavaScript中變數宣告,採用其弱型別。即變數在使用前不需作宣告,而是直譯器在執行時檢查其資料型別;

4)程式碼格式不一樣。