2016-12-18 4 views
-1

内のオブジェクトを作成します。また、設定時にはの初期値が初期設定されます。例えばのJava:私は宣言と初期化のdefinitonについて確認していない3つのステップ(宣言、割り当て/初期化、割り当て)

1)オブジェクトロッキー(クラス犬)の宣言

Dog rocky; 

これはスタック内の唯一のエントリを作成しない参照が存在しませんか?

。犬のインスタンスを作成

2):ヒープ内

new Dog(); 

メモリ割り当てデフォルト値の初期化(変数legs0に、リファレンスを作成します。

は、私は、コンストラクタを持っていない場合:コンパイラはデフォルトコンストラクタを作成します。それは空ですか? コンストラクタデフォルト値の初期化は、魚の異なるやかんでなければならないし、可能なインスタンス初期化子(次インスタンス初期化子ブロックコンストラクタ)の一つです。

3)割り当て:参照値をスタックに入れますか?

rocky = new Dog(); 

私はそうですか?

おかげ

サンプル:

class Dog 
{ 
    int legs; 

    Dog() 
     { 
      System.out.println("constructor invoked"); 
     } 
} 

public class Foo 
{ 
    public static void main(String[] args) 
     { 
      Dog rocky; 

      new Dog(); 

      rocky = new Dog(); 
     } 
} 

答えて

0

以下はDogオブジェクトへのポインタのためにメモリを割り当てる:

Dog rocky; 

以下にDogオブジェクトのメモリを割り当てる:

new Dog(); 

、次はDogポインタとDogオブジェクト用のメモリを割り当て、新しく作成されたDogオブジェクトのメモリ位置へのポインタの値を設定します。

Dog rocky = new Dog(); 

-

コンパイラが書き込み定義した各コンストラクターへのデフォルトの初期化。定義しない場合、コンパイラはデフォルトのものを作成します。 例:

int legs = 4; 

int legs; 
public Dog() { 
    legs = 4; 
} 

に変換されるデフォルトのinizialisationsは、あなたのコンストラクタの最初の文です。

関連する問題