两个String构造函数之间的区别

时间:2014-09-08 01:53:20

标签: java string constructor

我想知道以下两个陈述之间的区别:

    String str = new String(new char[]{'a', 'b'}); 

    String str = new String(new byte[]{'a', 'b'}); 

我在结果中得到同样的结果。我能想到的唯一区别是 当我有byte[]时,我不必将数组类型转换为char[],反之亦然。

TIA。

1 个答案:

答案 0 :(得分:1)

不同之处在于,第一个是采用字符数组并创建长度相同的字符串,并使用相同的char内容。第二个是从字节到字符的解码 - 在这种情况下使用平台默认编码。您可以使用另一个构造函数参数指定编码,实际上您应该总是这样做。 (使用平台默认编码很少是一个好主意 - 当你想这样做时,如果你明确地这样做,它会更清楚。)

对于'a''b'的值不太可能,结果会有差异 - 尽管平台默认编码可以是EBCDIC或类似的非ASCII兼容的东西。但值得理解的是,从根本上说这是两种不同的操作。

little 就像构建一个图像一样,第一个表单将传递一个神秘的PixelColor类型的数组,而第二个表单更像是说"从这个PNG文件加载它"。