为什么String是一个类?

时间:2012-10-03 21:54:24

标签: java string syntax

如果只能用

启动它
String s = "Hello";
那么为什么它是一个班级?参数在哪里?

5 个答案:

答案 0 :(得分:12)

String s = "Hello"; 

只是语法糖。它实际上是作为参考类型实现的。 (这是一个不可变的引用类型,所以你不能改变它)

答案 1 :(得分:10)

鉴于String是一个非常有用且经常使用的类,它有一个特殊的语法(通过字符串文字表示:""中的文本)来创建它的实例,但从语义上讲这两个是当量:

String s = "Hello"; // just syntactic sugar
String s = new String("Hello");

在幕后,两个表单都 100%等效,因为使用""的语法尝试重用Java字符串池中的字符串,而使用new String("")的显式实例化将总是创建一个新对象。

但不要搞错,任何一种语法都会产生对对象实例的引用,字符串在Java中不被视为原始类型,并且是类的实例,与其他类似。

答案 2 :(得分:7)

来自§4.3.3 of the Java Specification

  

字符串文字是对类String的实例的引用。

来自§3.10.5

  

字符串文字是对类String

的实例的引用

答案 3 :(得分:2)

String s = "Hello";

JVM将其视为:

String s = new String("Hello");并将其作为String字面设置为String池。

答案 4 :(得分:0)

示例中的行是创建String对象。您正在考虑的传统意义上没有任何参数。