/ /どのようにJavaは暗黙的にオブジェクトを作成するのですか? Stringクラスの場合と同様 - java、string、objectinstantiation

どのように暗黙的にオブジェクトを作成するJava? Stringクラスの場合と同様 - java、string、objectinstantiation

オブジェクトがどのように暗黙的に作成されているのか理解できません。

例:

String s = "implicit instantiation";

暗黙的にオブジェクトを作成できるクラスを自分で作ることはできますか?

回答:

回答№1の場合は3

いいえ、文字列のインスタンス化はコンパイラによって暗黙的に処理されます。このプロパティを持つのはStringクラスとArrayクラスだけです。

String greeting = "Hello world!";
char[] helloArray = { "h", "e", "l", "l", "o", "." };

オートボクシング プリミティブラッパー型のオブジェクトを暗黙的にインスタンス化することができますが、これはコンパイラによって処理される特別な場合でもあります。この機能を使用して独自のクラスを作成することはできません。

Boolean b = false;
Integer i = 0;
Double pi = 3.1416;

回答№2の場合は1

残念ながらあなたはそれをすることができません!

CやC ++とは反対に、Java言語の演算子をオーバーロードすることはできません。そのため、次のようなことはできません。

Foo myFoo = 1

文字列クラスの場合:

String s = "implicit instantiation"

これは開発者にとっては砂糖の意味で、裏側には「汚い」作業をしたり(文字列プールがあることを忘れないでください)ようなことをしたりすることがあります。

String s = new String("implicit instantiation")

同じことが、配列のような他のタイプ、または数値のラッパーにも当てはまります。


回答№3の場合は0

オブジェクトのインスタンスごとに、コンストラクタとコンストラクタが必要です。これは、メソッドを構築して初期化するための特別なメソッドです。例:

String s;  // Is not initialized and it"s nos constructed.

では、どうやってJavaで新しいオブジェクトを作るのですか?と簡単 new operator 新しいオブジェクトを作成します。

s = new String("qwe"); // New object constructed

しかし、これは初心者の多くが混乱するようなものです。なぜ私はこれをすることができます:

String s= "asdfasd;"

なぜなら String これはJavaの特別な場合であり、追加する必要はありません。 new operator クラスであるすべての原始変数のように。例:

Integer i = 3;
Double d = 3.3d;

等々。