6

だけで開始できる場合

String s = "Hello";

では、なぜクラスなのですか?パラメータはどこにありますか?

4

5 に答える 5

12
String s = "Hello"; 

単なる構文糖衣です。実際には参照型として実装されています。(これは不変の参照型であるため、変更できません)

于 2012-10-03T21:55:54.847 に答える
12

これStringは非常に便利で頻繁に使用されるクラスである""ため、インスタンスを作成するための特別な構文(文字列リテラル表現を介して:内部のテキスト)がありますが、意味的にはこれら2つは同等です。

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

内部では、両方の形式は100%同等ではありません""。これは、を使用する構文がJavaの文字列プールから文字列を再利用しようとするのに対し、withを明示的にインスタンス化するnew String("")と常に新しいオブジェクトが作成されるためです。

ただし、間違いなく、どちらの構文でもオブジェクトインスタンスへの参照が生成されます。文字列は、Javaではプリミティブ型とは見なされず、他の構文と同様にクラスのインスタンスです。

于 2012-10-03T21:57:35.393 に答える
7

Java仕様の§4.3.3から:

文字列リテラルは、クラスのインスタンスへの参照Stringです。

そして§3.10.5から:

文字列リテラルは、クラスのインスタンスへの参照ですString

于 2012-10-03T21:56:40.867 に答える
2
String s = "Hello";

JVMはそれを次のように扱います。

String s = new String("Hello");そしてそれを文字通りStringプールするためにインターンします。String

于 2012-10-03T21:56:41.760 に答える
0

この例の行は、Stringオブジェクトを作成しています。あなたが考えている伝統的な意味でのパラメータはありません。

于 2012-10-03T21:55:37.033 に答える