这是我正在尝试实现的复杂ADT类中的修改过的toString函数(我的疑问只是关于这个函数所以我没有包含之前声明的私有变量和其他函数):
class ComplexCart implements Complex{
public String toString(){
if(image == 0) return (real + "");
}
}
为什么我们不能写以下内容?
if(imag == 0) return(real);
为什么我们需要添加额外的“”?
答案 0 :(得分:0)
因为返回类型是String
,而real是整数类型。或者你可以使用real.toString()
答案 1 :(得分:0)
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);
答案 2 :(得分:0)
这是因为您必须从String
返回toString()
,并且大概real
不是String
。 real + ""
执行字符串连接(将real
转换为String
并将其与空字符串连接;请参阅JLS §15.18.1)并生成String
,这就是为什么你可以有效地退货。
请注意,您应该考虑使用Integer.toString(real)
而不是real + ""
之类的内容(请参阅Integer.toString()
)。
答案 3 :(得分:0)
由于real
是int类型,因此toString()
方法需要String返回。所以你需要添加""
;
+
是String连接运算符。