首頁 Java Java面試題 Java的基礎面試題目(3)

Java的基礎面試題目(3)

Dec 03, 2019 pm 03:14 PM
java

Java的基礎面試題目(3)

String s = new String("xyz");建立了幾個StringObject?是否可以繼承String類別?

兩個或一個都有可能,”xyz”對應一個對象,這個對象放在字串常數緩衝區,常數”xyz”不管出現多少遍,都是緩衝區中的那一個。                    (建議學習:java訪談題目

NewString每寫一遍,就建立一個新的對象,它使用常數」xyz」物件的內容來創造出一個新String物件。如果以前就用過'xyz',那麼這裡就不會創建”xyz”了,直接從緩衝區拿,這時創建了一個StringObject;

#但如果以前沒有用過"xyz",那麼此時就會建立一個物件並放入緩衝區,這種情況它會建立兩個物件。至於String類別是否繼承,答案是否定的,因為String預設final修飾,是不可繼承的。

String和StringBuffer的區別

JAVA平台提供了兩個類別:String和StringBuffer,它們可以儲存和操作字串,即包含多個字元的字元資料。這個String類別提供了數值不可改變的字串。而這個StringBuffer類別提供的字串可以進行修改。

當你知道字元資料要改變的時候就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態建構字元資料。

下面這條語句總共建立了多少個物件:String s="a" "b" "c" "d";

#對於以下程式碼:

String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2 == "ab");
System.out.println(s3 == "ab");
登入後複製

第一條語句印出的結果為false,第二條語句印出的結果為true,這說明javac編譯可以對字串常數直接相加的表達式進行最佳化,不必要等到運行期再去進行加法運算處理,而是在編譯時去掉其中的加號,直接將其編譯成一個這些常數相連的結果。

題目中的第一行程式碼被編譯器在編譯時最佳化後,相當於直接定義了一個”abcd”的字串,所以,上面的程式碼應該只創建了一個String物件。

寫如下兩行程式碼:

String s ="a" + "b" +"c" + "d";
System.out.println(s== "abcd");
登入後複製

最終列印的結果應該為true。

try {}裡有一個return語句,那麼緊接在這個try後面的finally{}裡的code會不會被執行,什麼時候被執行,在return前還是後?

我們知道finally{}中的語句是一定會執行的,那麼這個可能正常脫口而出就是return之前,return之後可能就出了這個方法了,鬼知道跑哪裡去了,但更準確的應該是在return中間執行,請看下面程式碼的運行結果:

public classTest {
    public static void main(String[]args) {
       System.out.println(newTest().test());;
    }
    static int test()
    {
       intx = 1;
       try
       {
          returnx;
       }
       finally
       {
          ++x;
       }
    }
  
}
登入後複製

---------執行結果---------

1
登入後複製

運行結果是1,為什麼呢?

主函數呼叫子函數並得到結果的過程,好比主函數準備一個空罐子,當子函數要回傳結果時,先把結果放在罐子裡,然後再將程式邏輯回到主函數。

所謂返回,就是子函數說,我不運行了,你主函數繼續運行吧,這沒什麼結果可言,結果是在說這話之前放進罐子裡的。

final, finally, finalize的區別。

final 用於宣告屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類別不可繼承。內部類別要存取局部變量,局部變數必須定義成final類型。

finally是例外處理語句結構的一部分,表示總是執行。

finalize是Object類別的一個方法,在垃圾收集器執行的時候會呼叫被回收物件的此方法,可以覆寫此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。但是JVM不保證此方法總被呼叫

運行時異常與一般異常有何異同?

異常表示程式運作過程中可能出現的非正常狀態,運行時異常表示虛擬機器的通常操作中可能遇到的異常,是一種常見運行錯誤。 java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。

error和exception有什麼區別?

#error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說記憶體溢出。不可能指望程式能處理這樣的情況。 exception表示一種設計或實作問題。也就是說,它表示如果程式運作正常,從不會發生的情況。

簡單說說Java中的異常處理機制的簡單原理和應用。

異常是指java程式運行時(非編譯)所發生的非正常情況或錯誤,與現實生活中的事件很相似,現實生活中的事件可以包含事件發生的時間、地點、人物、情節等訊息,可以用一個物件來表示。

Java使用物件導向的方式來處理異常,它把程式中發生的每個異常也都分別封裝到一個物件來表示的,該物件中包含有異常的資訊。

Java對異常進行了分類,不同類型的異常分別以不同的Java類別表示,所有異常的根類別為java.lang.Throwable,Throwable下面又派生了兩個子類別:

Error和Exception,Error表示應用程式本身無法克服和恢復的一種嚴重問題,程式只有奔潰了,例如,說記憶體溢出和線程死鎖等系統問題。

Exception表示程式也能夠克服和復原的問題,其中又分為系統異常和普通異常:

系統異常是軟體本身缺陷所導致的問題,也就是軟體開發人員考慮不周所導致的問題,軟體使用者無法克服和恢復這種問題,但在這種問題下還可以讓軟體系統繼續運作或讓軟體掛掉。

例如,陣列腳本越界(ArrayIndexOutOfBoundsException),空指標例外(NullPointerException)、類別轉換例外(ClassCastException);

普通例外是運作環境的變化或例外所導致的問題,是使用者能夠克服的問題,例如,網路斷線,硬碟空間不夠,發生這樣的異常後,程式不應該死掉。

java為系統異常和普通異常提供了不同的解決方案,編譯器強制普通異常必須try..catch處理或用throws聲明繼續拋給上層調用方法處理,所以普通異常也稱為checked異常,而係統異常可以處理也可以不處理,所以,編譯器不強制用try..catch處理或用throws聲明,所以系統異常也稱為unchecked異常。

Java 中堆疊和堆疊有什麼不同?

JVM 中堆疊和堆疊屬於不同的記憶體區域,使用目的也不同。棧常用於保存方法幀和局部變量,而物件總是在堆上分配。棧通常都比堆小,也不會在多個執行緒之間共享,而堆被整個 JVM 的所有執行緒共享。

堆疊:在函數中定義的一些基本類型的變數和物件的參考變數都是在函數的堆疊記憶體中分配,當在一段程式碼區塊定義一個變數時,Java就在堆疊中為這個變數分配記憶體空間,當超過變數的作用域後,Java 會自動釋放掉為該變數所分配的記憶體空間,該記憶體空間可以立即被另作它用。

堆:堆記憶體用來存放由 new 建立的物件和數組,在堆中分配的內存,由 Java 虛擬機的自動垃圾回收器來管理。

在堆中產生了一個數組或物件之後,還可以在堆疊中定義一個特殊的變量,讓堆疊中的這個變數的取值等於數組或物件在堆疊記憶體中的首地址,棧中的這個變數就成了數組或物件的引用變量,以後就可以在程式中使用堆疊中的引用變數來存取堆中的數組或者對象,引用變數就等於是為數組或是物件起的一個名稱。

能強制 int 轉換為 byte 類型的變數嗎?如果該值大於 byte 類型的範圍,會出現什麼現象?

我們可以做強制轉換,但Java 中int 是32 位元的,而byte 是8 位元的,所以,如果強制轉化,int 類型的高24 位元將會被丟棄,因為byte類型的範圍是從-128 到128。

以上是Java的基礎面試題目(3)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP與Python:核心功能 PHP與Python:核心功能 Apr 13, 2025 am 12:16 AM

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

Java程序查找膠囊的體積 Java程序查找膠囊的體積 Feb 07, 2025 am 11:37 AM

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

PHP:許多網站的基礎 PHP:許多網站的基礎 Apr 13, 2025 am 12:07 AM

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

創造未來:零基礎的 Java 編程 創造未來:零基礎的 Java 編程 Oct 13, 2024 pm 01:32 PM

Java是熱門程式語言,適合初學者和經驗豐富的開發者學習。本教學從基礎概念出發,逐步深入解說進階主題。安裝Java開發工具包後,可透過建立簡單的「Hello,World!」程式來實踐程式設計。理解程式碼後,使用命令提示字元編譯並執行程序,控制台上將輸出「Hello,World!」。學習Java開啟了程式設計之旅,隨著掌握程度加深,可創建更複雜的應用程式。

See all articles