2017-04-12 12 views
4

オブジェクトが暗黙的にどのように作成されるのか理解できません。Javaがオブジェクトを暗黙的に作成する方法は? Stringクラスの場合と同様に

例:

String s = "implicit instantiation"; 

私は、そのオブジェクトの暗黙的に作成することができ、私自身のクラスを作ることはできますか?

+2

要するに:できません。 –

+2

'String'は、文字列リテラル、連結演算子、' switch'の場合に使用できる能力のような構文的な砂糖を持つ特別なオブジェクトです。文字列にはその機能があります(配列にも "リテラル"があります)。 – RealSkeptic

答えて

3

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

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

Autoboxingあなたが暗黙的にプリミティブラッパー型のオブジェクトをインスタンス化することができますが、それはまた、コンパイラによって処理される特殊なケースです。あなたはこの能力で自分のクラスを作ることはできません。

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

「整数i = 5」もできませんか? –

+0

@Shashwatああ、それを加えてみましょう。 –

1

残念ながら、それはできません。

Cに反対またはC++は、Java言語で任意の演算子をオーバーロードすることはできませんので、文字列クラスの場合に

Foo myFoo = 1 

ような何かを行うには可能な方法はありません。

String s = "implicit instantiation" 

は、開発者のための砂糖のsintaxですが、舞台裏では "汚い"作業をしているようなものです(文字列プールがあることを覚えておいてください):

String s = new String("implicit instantiation") 

同じあなたはコンストラクタと、コンストラクタそのA構造のための特別な方法が必要とメソッドを初期化し、オブジェクトのすべてのインスタンスのために...配列、または数値のラッパーのようないくつかの他のタイプのために

0

を適用します。例:

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

Javaで新しいオブジェクトを作成するにはどうすればよいですか? new operatorで簡単に新しいオブジェクトを作成できます!

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

しかし、ここには多くの初心者が混乱するものがあります。 Stringは、Javaでの特殊なケースであり、あなたがクラスであるすべてのプリミティブの変数のようにnew operatorを追加する必要はありませんので

String s= "asdfasd;" 

:なぜ私はこれを行うことができます。例:

Integer i = 3; 
Double d = 3.3d; 

などです。

関連する問題