1樓:匿名使用者
對於列印物件,沒有重寫tostring 導致。
現在說一下,什麼情況下要重寫tostring,object類裡的tostring只是把字串的直接列印,數字的要轉化成字元再列印,而物件,則直接列印該物件的hash碼。所以當你要想按照你想要的格式去字串一些物件的時候,就需要重寫tostring了。比如乙個student物件,直接tostring肯定是乙個hash碼。
然而你想得到的比如是:name:***,age:
***。這時就重寫tostring就是在tostring裡寫:system.
out.println(「name:」+student.
getname);
system.out.println(「age:」+student.getage)。
這樣再tostring就直接反回你想要的格式。
--滿意請採納!!
2樓:東東程式猿
我們可以看到的是這個stringdemo本身沒有tostring這個方法,但是他在呼叫的時候卻沒有報錯,這是因為tostring是最高父類object類中的方法,所有的類其實都繼承到了這個方法。這個方法的內容就是列印物件的包名+類名+@+物件的雜湊碼,所以說這個題說的並不對,最後的那個值不是位址,只是個雜湊碼而已,雜湊碼的定義是同乙個物件的雜湊碼必須一樣,但是不要求不同物件的雜湊碼必須不一樣,這樣就可以確定他一定不是記憶體位址。這裡還有這道題的類名定義:
stringdemo,程式預設規範是類名首字母都要大寫,以此可見,出題人的水平其實不怎麼地。
如果可以的話,建議樓主不要再繼續跟著他學。
3樓:0偶然的必然
因為你沒有重寫tostring,所以預設輸出系統的tostring方法內容
4樓:
str1,str2都是物件,如果沒有重寫tostring,那麼只是會把物件在記憶體中的位址列印出來
以下程式執行後的輸出結果是
for i 0 i 3 i 的作用是把x 3 4 初始化成,而 for i 0 i 3 i 輸出的其實是 x 0 0 x 1 1 x 2 2 是取位址符,所以輸出型別變為char的指標,而結果就是從當前位址開始,輸出其後的字元,直到 0 結束符為止,而 0 結束符在字串 abc 宣告時,已經預設新增...
1以下程式的執行結果是mainintc
2 1 1 因為這是短路邏輯,c x y x 的值是1,所以 右側的運算就不再進行了,y 等於沒有執行,還是1。這是考察符號優先順序的 在c語言中 的優先順序高於 優先順序高於 所以運算時先計算x 和y 可以知道x 2,y 2接著運算x y 為1,所以c 1 x,y,c輸出為 221 上面那個回答錯...
以下程式執行後輸出結果是Mainchar a a ,b Printf
main printf函式名錯誤 不要使用英文的標點符號 bc 3.以下程式的輸出結果是 main char a a b b a b 4 printf c,d n a,b 選c e,4 a b 4 等於 a a b 4 c語言中運算順序是括號優先 第一次b賦值的 b 被後面的 b 4 覆蓋了,所以b...