![](/img/trans.png)
[英]Java Class isntance(with ToString method overriding) outputs “adt.BinaryNode@1e24e45”
[英]Clarification about the toString method within an ADT class
這是我嘗試實現的Complex ADT類中的修改過的toString函數(我的疑問僅是關於此函數,因此我沒有包括之前聲明的私有變量和其他函數):
class ComplexCart implements Complex{
public String toString(){
if(image == 0) return (real + "");
}
}
我們為什么不能寫以下內容?
if(imag == 0) return(real);
為什么我們需要添加額外的“” ?
由於返回類型為String
,而real是整數類型。 或者,您可以使用real.toString()
public String toString(){
if(image == 0) return (real + "");
}
在上面的代碼中,如果real
不是String
類型的,則為compile time error
。
如果它是String
類型的,則不會發生錯誤。
要使real
string
您要real + "".
然后,直接的問題是然后如何使用+ ""
???
這里的字符串文檔
Java語言為字符串連接運算符(+)以及將其他對象轉換為字符串提供了特殊的支持。 字符串連接是通過StringBuilder(或StringBuffer)類及其append方法實現的。 字符串轉換是通過toString方法實現的,該方法由Object定義並由Java中的所有類繼承。
附帶說明:
與String串聯不是一個好主意,有一些相同且更好的方法來實現。
1)Integer.toString(intval);
2)String.valueOf(intval);
這是因為您必須從toString()
返回一個String
,並且大概real
不是String
。 real + ""
執行字符串連接(將real
轉換為String
並將其與空字符串連接;請參見JLS§15.18.1 )並生成String
,這就是您可以有效返回它的原因。
請注意,您應該考慮在real + ""
使用類似Integer.toString(real)
東西(請參閱Integer.toString()
)。
由於real
是int類型,因此toString()
方法期望String返回。因此,您需要添加""
;
+
是String串聯運算符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.