澄清ADT类中的toString方法

时间:2013-08-24 12:30:32

标签: java tostring

这是我正在尝试实现的复杂ADT类中的修改过的toString函数(我的疑问只是关于这个函数所以我没有包含之前声明的私有变量和其他函数):

class ComplexCart implements Complex{
  public String toString(){
    if(image == 0) return (real + "");
  }
}

为什么我们不能写以下内容?

if(imag == 0) return(real);

为什么我们需要添加额外的“”

4 个答案:

答案 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 + "".

然后,立即问题是它如何与+ "" ??

一起使用

这里是Docs of String

  

Java语言为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串。字符串连接是通过StringBuilder(或StringBuffer)类及其append方法实现的。字符串转换是通过方法toString实现的,由Object定义并由Java中的所有类继承。

作为旁注:

与String连接是个坏主意。有一些相同且更好的方法可以做到。

1)Integer.toString(intval);
2)String.valueOf(intval);

答案 2 :(得分:0)

这是因为您必须从String返回toString(),并且大概real不是Stringreal + ""执行字符串连接(将real转换为String并将其与空字符串连接;请参阅JLS §15.18.1)并生成String,这就是为什么你可以有效地退货。

请注意,您应该考虑使用Integer.toString(real)而不是real + ""之类的内容(请参阅Integer.toString())。

答案 3 :(得分:0)

由于real是int类型,因此toString()方法需要String返回。所以你需要添加"";
+是String连接运算符。