0

这是我试图实现的 Complex ADT 类中修改后的 toString 函数(我的怀疑只是关于这个函数,所以我没有包括之前声明的私有变量和其他函数):

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

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

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

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

4

4 回答 4

0

因为返回类型是String,而 real 是整数类型。或者你可以使用real.toString()

于 2013-08-24T12:32:01.497 回答
0
 public String toString(){
    if(image == 0) return (real + "");
  }

在上面的代码中,如果real 不是String 它的类型compile time error

如果它是类型String。没有错误发生。

realstring你写的那样做real + "".

然后,直接的问题是它是如何工作的+ ""

这里是字符串的文档

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

作为旁注:

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

1)Integer.toString(intval);
2)String.valueOf(intval);
于 2013-08-24T12:32:22.253 回答
0

这是因为您必须返回 a Stringfrom toString(),并且可能real不是 a Stringreal + ""执行字符串连接(转换real为 aString并将其与空字符串连接;请参阅JLS §15.18.1)并产生 a String,这就是您可以有效返回它的原因。

请注意,您应该考虑使用类似Integer.toString(real)over 的东西real + ""(请参阅 参考资料Integer.toString())。

于 2013-08-24T12:32:28.283 回答
0

由于real是 int 类型,其中 astoString()方法期望 String 返回。所以你需要 add "";
+这里是字符串连接运算符。

于 2013-08-24T12:33:34.977 回答