2015-10-05 61 views
-2

字符串是一个对象。为什么可以像原始类型一样初始化它:String str =“my string”;我期待通过使用构造函数来看初始化:new String(“my string”);作为原始类型的Java字符串初始化

+0

[This](http://stackoverflow.com/questions/8046045/java-string-literal-pool-and-string-object)也可能有用。 –

回答

2

这只是java提供的简化。另一种选择是非常难看的。您可选择的解决方案有一个简单的逻辑错误:

new String("my string"); 

只是藏汉使用字符串字面简单地"my string"。该真正选择将使用byte[](不推荐),这看起来更糟糕是

new String(new char[]{'m','y',' ',...,'n','g'}); 

或者只是相同的例子。

+0

谢谢,所以基本上编译器将“我的字符串”转换为char序列给我们? –

+0

@WildGoat不需要转换,'String'字面上是Java中的一个'CharSequence',因为这是'String'类实现的接口之一。 – azurefrog

0

你可以去javadocs

除非需要的原明确的复制,使用此构造是不必要的,因为字符串是不可改变的。