私が間違っている場合は私を修正してください、私はこの権利を理解していることを明確にしたいだけです。オブジェクトリファレンスclarifcation
javaでオブジェクトを作成する場合は、new
キーワードの後にクラスタイプを指定します。 Ex。 new [someclassnamehere]();
コンストラクタに応じて、オブジェクトを作成するときに引数に渡すことで引数を渡すことができます。
new
キーワードを使って新しいオブジェクトoを作成するコード行を持つだけでは、実際にその情報への参照を保持しているものがないために役立つかどうかはわかりません。しかし、それは正しいようです。
type name
などを使用して、作成している新しいオブジェクトへの参照を含む変数を作成することができます。Employee someData;
。しかし、まだ実際にはオブジェクトを参照する必要はありません。まだ作成されていないものを参照してください。したがって、上記の情報を適用することによって: Employee someData = new Employee(name);
従業員の名前を含むEmployee object
を作成しました。 new
キーワードは、Employee
クラスのインスタンスを作成しました。このオブジェクトでは、someData
変数が新しく作成されたオブジェクトを参照します。
したがって、someData
という変数は、オブジェクトが格納されている場所のメモリにアドレスが格納されているため、Employee object
を参照すると言うことができます。このアドレスにより、オブジェクトの実際のデータにアクセスすることができます。この場合、従業員の名前です。
データ型がEmployee
のArrayList
を作成する場合は、Employee objects
を格納できます。ですから、someData2
、someData3
などと同様に、someData
変数をarrayListに追加することができます。 (ちょうどそれらがすべて同じタイプであるが、異なる従業員情報を含んでいると仮定して)。 これらの各変数には、これらのオブジェクトへの参照が含まれています。 ArrayList
オブジェクトには、これらのオブジェクトへの参照も含まれています。ArrayList
要素には、Employee Objects
を参照するsomeData変数が含まれています。
例:私はこれまでのダウンアイデアを得ていますが、実際に参照変数を作成しないとき、どのような少し私をオフにスローすることはあり
ArrayList.get(1) -> someData -> reference variable(address) -> employee Object
ArrayList.get(2) -> someData2 -> reference variable(address) -> employee Object2
かなり確信して。
それでは、あなたがオブジェクトを作成します(データはいくつかのデータベースなどから読み込まれている)とArrayList
に追加ループを作成しましょう。このループでは、必要なデータを収集し、それを使用してオブジェクトを作成し、それを直接ArrayList
に追加します。簡単にするために
(いくつかの擬似コードと実際のコードの組み合わせ)のは、それはこのようになりましょう
ArrayList<Employee> list = new ArrayList<Employee>();
// While data from the database still exist (while loop,etc)
// extract some sort of data from the database, such as their name and hours
// create an object of this information and store it in an ArrayList
list.add(new Employee(name, hours);
// end loop
、のは、それが5つのオブジェクトを作成したので、ループが5回を実行したと述べてみましょう。 これはArrayList List
に5つのオブジェクトを追加し、これらのオブジェクトへの参照が実際にはArrayList要素に含まれていることを意味します。最初のオブジェクトをArrayList
に追加するには、list.get(1)
を使用します(ArrayListの開始位置は1で、インデックスは0ではありません)。このオブジェクトへの参照が返されます。
編集:私の間違いを私に許してください、私はbrainfartを持っていて、混乱していると思います。なぜ私はArrayListのインデックスがそのように2番目のように働いたと思っているのか分かりません
これは、ループを使ってオブジェクトを作成する正しい方法ですか?
答えは「はい」ですが、実際に知りたいことはわかりません。この質問は非常に幅広いです。 – 4castle
_1を除くすべてが、ArrayListが1から始まり、indexes_が0ではないことは間違いないと確信しています。 _reference変数は、ある種の参照型の変数です。 'Employee'は参照型です。したがって、 'Employee someData;'は参照変数の宣言です。 – Savior
* "ArrayList要素にはこれらのsomeData変数が含まれています" *これは正しいことがわかりません。 ArrayListには変数はなく、参照もあります。 'theArrayList.add(someData)'を呼び出すと、 'someData'の値(それが指しているオブジェクトのアドレス)がコピーされます。あなたが終わるのは、同じオブジェクトを指す2つの別々の参照( 'someData'変数の中の1つ、' ArrayList'の中の1つ)です。 Java参照はポインタのようなものです。おそらくhttp://stackoverflow.com/q/40480/2891664を参照してください。 – Radiodef