Given the definitions of the MyString class and the Test class:



What is the result?

A.

Hello Java SE 8
Hello Java SE 8

B.

Hello java.lang.StringBuilder@<<hashcode1>>
Hello p1.MyString@<<hashcode2>>

C.

Hello Java SE 8
Hello p1.MyString@<<hashcode>>

D.

Compilation fails at the Test class.

題解

運算子「+」若其中一個運算元為字串,那麼它將會做字串連接,否則為加法運算。任何的物件,都擁有「toString()」方法,可以轉成字串。預設的「toString()」方法於Object類別中,程式實作如下:

由於MyString類別並未覆寫Object的「toString()」方法,因此會直接使用原本的程式實作。

所以這個題目的實際輸出為:

Hello Java SE 8
Hello p1.MyString@15db9742

「15db9742」為雜湊值,在不同環境下可能有不一樣的結果。