2017-06-07 19 views
0

私はクラスオブジェクトの配列を初期化しましたが、のメモリ(スタックとヒープ)の割り当て方法が不思議です。教科書では、の左にのメモリ割り当てを描画します。オブジェクトの配列のメモリ割り当て(スタックとヒープ)

マイ質問がある:メモリの割り当ては、以下のコードでは、new Person[]{new Person("Simon", 20)...}私は右に描くものではありませんなぜ、new Personオブジェクトはper[0]にそのメモリアドレスを割り当てるでしょう、しかし、per[0]ですPerson[] per = new Person[3]が実行されるとヒープで作成されます。クラスの配列の

初期化

class Person { 
     private String name; 
     private int age; 
     public Person(String name, int age) { 
      this.name = name; 
      this.age = age; 
     } 
    } 

    public class Main { 
     public static void main(String[] args) { 
      Person[] per = new Person[]{new Person("Simon", 20), new Person("John", 21), new Person("Willy", 22)}; 
     } 
    } 
  1. Left(TextBook)

  2. My Thought

答えて

1

理由MEMORオブジェクトyの割り当ては、それは参照があろうと右側にありますが、あなたが値を使用した場合

per 

または

per[0] 

、私は右に描くものではありませんスタックに持ち込むことができます。

+0

こんにちはPeterさん、あなたの返事をありがとう、これは私が他のことをするために 'per [0]'の値を使わなかったことを意味する、教科書に載っているコード全体ですが、イメージは私を本当に混乱させました...あなたが見ているように、私が理解しているのは、私が右に描いたイメージです。私は本当にどちらが良いのかわかりません... – Ruizhi

+0

@Ruizhiはあまり役に立ちませんあなたがその要素にアクセスしない限り。 –

関連する問題