オブジェクトがどのように暗黙的に作成されているのか理解できません。
例:
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;
等々。