1

我试图List<String[]>在函数之间传递一个,但我得到了一个奇怪的结果。

功能!

public List<String[]> tes(){

    List<String[]> test = new ArrayList<String[]>();

    String[] temp = {"a","b","c"};
    test.add(temp);

    temp[0] = "d";
    temp[1] = "e";
    temp[2] = "f";

    test.add(temp);

    return test;
 }

提取。

    String output = "";
    List<String[]> Results = db.tes();
    for (String[] row: Results) {
        output = output + row[0] + " " + row[1] + "\n";
    }

结果:

d e
d e

我真的不明白。应该是a b d e,但不是。

4

2 回答 2

0

是的,这是因为,您在列表测试中添加了两次相同的对象 (temp)。

list(test) 两次持有同一个对象的引用。

如果您在添加到列表后尝试更改对象的值,它也会在列表中发生更改,因为列表包含对象的引用。

于 2013-01-05T10:37:31.943 回答
0

你有一个对象温度。这意味着列表中的所有对象都与您单独的临时文件有链接。尝试使用new每个字符串,您的结果会有所不同。

祝你好运!

于 2013-01-05T10:24:35.230 回答