在java中字符串可以通过下面给出的两种方式创建
String foo="Test";
String fooobj=new String("Test");
到处都提到这两种创建字符串的方法之间的区别。我想了解更多什么是合适的场景,
我们应该去哪里
String foo="Test";
以及什么时候去
String fooobj=new String("Test"); ?
简短的回答:如果你有任何疑问,你就不想new String("literal here")
。如果您需要它,您就会知道您需要它以及为什么需要它。
长答案:
基本上是您唯一想要使用的时间new String("literal here")
是如果你想确保结果字符串对象不是==
任何其他字符串对象。文字得到interned自动地;通过创建的字符串new String("literal here")
不是。
那你为什么想要那个?答案是你几乎永远不会,因为String
实例是不可变的,所以你不在乎是否共享String
以其他事物为例。我能想象的唯一场景是,如果你有一个 API 接受String
你想要一个标志值而不是null
,并且您想通过检查该标志/标记值==
, 像这样:
public static final String MARKER = new String("Marker");
public void someFictionalMethod(String arg) {
if (arg == MARKER) {
// Take action on the marker
}
else {
// Take action on the string
}
}
...即使那样,我也会发现它有点可疑,并会探索其他方法来做到这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)