我想知道以下两个陈述之间的区别:
String str = new String(new char[]{'a', 'b'});
和
String str = new String(new byte[]{'a', 'b'});
我在结果中得到同样的结果。我能想到的唯一区别是
当我有byte[]
时,我不必将数组类型转换为char[]
,反之亦然。
TIA。
答案 0 :(得分:1)
不同之处在于,第一个是采用字符数组并创建长度相同的字符串,并使用相同的char
内容。第二个是从字节到字符的解码 - 在这种情况下使用平台默认编码。您可以使用另一个构造函数参数指定编码,实际上您应该总是这样做。 (使用平台默认编码很少是一个好主意 - 当你想这样做时,如果你明确地这样做,它会更清楚。)
对于'a'
和'b'
的值不太可能,结果会有差异 - 尽管平台默认编码可以是EBCDIC或类似的非ASCII兼容的东西。但值得理解的是,从根本上说这是两种不同的操作。
它 little 就像构建一个图像一样,第一个表单将传递一个神秘的PixelColor
类型的数组,而第二个表单更像是说"从这个PNG文件加载它"。