繁体   English   中英

关于ADT类中的toString方法的说明

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM