从Sun的Java教程中,我会认为这段代码会将一个集合转换为一个数组.
import java.util.*;
public class Blagh {
    public static void main(String[] args) {
        Set<String> set = new HashSet<String>();
        set.add("a");
        set.add("b");
        set.add("c");
        String[] array = set.toArray(new String[0]);
        System.out.println(set);
        System.out.println(array);
    }
}
但是,这给了
[a, c, b]
[Ljava.lang.String;@9b49e6
我误解了什么?
coo*_*ird 32
代码工作正常.
更换:
System.out.println(array);
附:
System.out.println(Arrays.toString(array));
输出:
[b, c, a] [b, c, a]
String数组的表示显示数组的"文本表示",由Object.toString- 获得- 类名和数组的哈希码作为十六进制字符串.
小智 5
没关系.
您没有看到System.out.println(array)的数组内容,因为println调用object.toString()来从Object获取输出的字节.
由于HashSet会覆盖默认的toString()实现,因此您可以使用System.out.println(set)查看设置内容;
由于数组不覆盖默认的toString()(它给出类名和某种身份哈希码),你得到的是模糊的[Ljava.lang.String; @ 9b49e6
希望有所帮助
| 归档时间: | 
 | 
| 查看次数: | 98290 次 | 
| 最近记录: |