为什么String是一个类?

Luk*_*uke 6 java string syntax

如果它可以用just启动

String s = "Hello";
Run Code Online (Sandbox Code Playgroud)

那么为什么它是一个班级?参数在哪里?

Sam*_*ica 12

String s = "Hello"; 
Run Code Online (Sandbox Code Playgroud)

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


Ósc*_*pez 10

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

String s = "Hello"; // just syntactic sugar
String s = new String("Hello");
Run Code Online (Sandbox Code Playgroud)

篷子后面两种形式都不能等同100%,如使用语法""尝试重新使用Java的字符串池的字符串,而用显式实例new String("")总是会创建一个新的对象.

但不要搞错,要么语法会产生对对象实例的引用,字符串在Java中不被视为原始类型,并且是类的实例,就像任何其他类.


Tim*_*per 7

根据Java规范§4.3.3:

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

§3.10.5开始:

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