这与以下内容有何不同?
这行代码在这里:
String newString = new String(oldString.getBytes("UTF-8"), "UTF-8"));
构造一个新的 String 对象(即 的副本),而这行代码:oldString
String newString = oldString;
声明一个类型的新变量,并将其初始化为引用与变量 相同的 String 对象。java.lang.String
oldString
是否存在两条线路具有不同输出的情况?
绝对:
String newString = oldString;
boolean isSameInstance = newString == oldString; // isSameInstance == true
与。
String newString = new String(oldString.getBytes("UTF-8"), "UTF-8"));
// isSameInstance == false (in most cases)
boolean isSameInstance = newString == oldString;
a_horse_with_no_name(见评论)当然是正确的。等效于
String newString = new String(oldString.getBytes("UTF-8"), "UTF-8"));
是
String newString = new String(oldString);
减去彼得·劳里(Peter Lawrey)在回答中解释的编码的细微差别。