2013-11-21 30 views
2

对不起,如果这个问题已经被问到或者它是否过时。将值分配给String类而不创建新实例

字符串是一个类。我们可以将值赋给String而不创建新的实例对象。

String someString = "Value";

这是如何工作的,而不用于字符串制作实例?是否可以创建用户定义的类来直接分配值而不创建新对象?

+0

我想你的意思是,“like'String something =”Value“;'' –

+0

String =”Value“;将无法正常工作:) – Lucas

+0

@chris - 感谢您的纠正。 :-) – OneTwo

回答

3

看到这个interesting article

字符串真的特别

Java的设计人员决定保留原始类型为面向对象的语言,而不是将所有东西都作为对象,因此可以提高语言的性能。基元被存储在调用堆栈中的 ,其需要更少的存储空间并且更便宜地操作。另一方面,对象存储在程序堆 中,这需要复杂的内存管理和更多的存储空间。 由于性能原因,Java的字符串被设计为介于 原语和类之间。


另外:

Java已经保持字符串文字 提供一种特殊的机制 - 在一个所谓的串公共池..

当你这样做:

String myStr1 = "Hello"; 
String myStr2 = "Hello"; 

然后

myStr1 == myStr2,因为他们都存储在(阅读文章)。

但是,如果你建立一个新的String对象

String myStr1 = new String("Hello"); 
String myStr2 = new String("Hello"); 

然后引用相等。

我强烈建议您访问JLS。它说,字符串被视为以不同的方式,就像那样:)

0

字符串是一种特殊情况。 String文字创建于the string pool。在池中添加字符串后,如果声明了具有相同值的另一个字符串,则引用将指向池中的相同字符串。

并回答你的问题,你不能创建用户定义的类,不使用new。只有当您仅使用该类的静态方法和字段,然后才使用 ClassName.StaticFieldOrMethod

相关问题