如果只能用
启动它String s = "Hello";
那么为什么它是一个班级?参数在哪里?
答案 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)
答案 3 :(得分:2)
String s = "Hello";
JVM将其视为:
String s = new String("Hello");
并将其作为String
字面设置为String
池。
答案 4 :(得分:0)
示例中的行是创建String对象。您正在考虑的传统意义上没有任何参数。