Java toString()方法

3
public String toString()
        {
        String str;
        str = "The test scores in descending order are \n";

        for(int i = 0; i < data.length; i++)
        {
            str = str + data[i] + " ";
        }
        str = str + "\nThe average is " + mean;
        return str;
        }

这段Java代码按降序返回我的代码得分。但是,让我困惑的是'str'的返回方式。我的理解是'str'的返回值为(str +“\nThe average is”+ mean)。因为这是我最后更新的'str'值,它将更新'str'为“ The test scores in descending order are”First, Second the loop, then last "str + "\nThe average is " + mean"。所以最终即使我们多次更新了'str',实际上打印出来的'str'只会是“ str +“\nThe average is”+ mean”。请解释为什么程序最终会打印出:

按降序排列的测试分数为 70 80.......... (元素值)

(然后返回平均值信息)

1个回答

4
由于该命令被启用
str = str + "\nThe average is " + mean;

这意味着将新内容追加到已有的str中,并将结果存储在str中。如果str原来已经有内容了,那么新内容会在原有内容后面添加。
str = "\nThe average is " + mean;

它将代替 str 中已有的所有内容。


一旦你掌握了赋值语句右侧独立计算的概念,对于新手程序员来说理解起来就更容易了。 - Patrick White
哇,这帮了很多!非常感谢,你指出来后,这个问题真的很明显。 - Wade Aston
其实还有些不太清楚的地方,为什么for循环不会先打印"The test scores in descending order are \n" 和数组的最后一个元素,而是打印了所有的数组元素。命令str = str + "\nThe average is " + mean;会将已经存在于'str'中的所有内容附加在一起,这似乎只是"The test scores..."以及for循环中的最后一个元素? - Wade Aston
@WadeAston 因为你只加了一次。a+b 是 ab,ab+c 是 abc(不是 ababc)。 - Elliott Frisch
@ElliottFrisch 我必须更新最后一条评论,因为它太模糊了。 - Wade Aston
没有任何东西可以将其重置为空。ab+c仍然是abc。 - Elliott Frisch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接