![](/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.