【发布时间】:2012-01-13 16:45:58
【问题描述】:
我遇到了这行遗留代码,我正在试图弄清楚:
String newString = new String(oldString.getBytes("UTF-8"), "UTF-8"));
据我所知,它是使用相同的 charSet 进行编码和解码。
这与以下有何不同?
String newString = oldString;
是否存在两条线输出不同的情况?
p.s.:澄清一下,是的,我知道excellent article on encoding by Joel Spolsky!
【问题讨论】:
-
当然,一个的区别在于
String newString = oldString;,你仍然只有一个字符串的副本(你只是从两个变量指向它)。解码/编码生成字符串的副本。这并不重要,因为Strings 是不可变的。不过,这可能不是旧代码如此的原因;String有一种更直接的克隆方式 (String(String))。除了测试String类的编码/解码方法之外,我想不出你为什么要进行编码/解码的好 理由。 -
上下文是否暗示了为什么字符串转换可能已经或曾经是必要的?
-
@T.J.Crowder:+1,当然!我并不是指所指的实际对象的差异。感谢您指出这一点。
-
还有一个主要区别:其中一个不能编译 ;-)