teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

誤字の修正

2021/10/31 08:08

投稿

raccy
raccy

スコア21768

answer CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  参照型は`int[]`のような配列の型または`String`のようなクラスのオブジェクトの型です。この型では変数が宣言された場合、実際のオブジェクトを参照するために必要な分のメモリ領域が確保されます。実際の所では、Cで言えばポインタと呼ばれるもので実装されており、64bitアーキテクチャ向けの実装では8バイトです(以下の文章では、64bitの環境を前提とし、8バイトを確保する物として扱います。)。その変数の中身は、配列またはオブジェクトを指し示す値が入っています。また、`null`という特殊な値も入れることができ、どのオブジェクトも指し示さないことを表す値です。
10
10
 
11
- 個々で注意して欲しいのは、参照型の変数の中に配列やオブジェクトが入っているわけでは無いです。変数の中はそれらを参照する値(しばしば参照値と言われます)であって、オブジェクトそのものではないのです。では、配列やオブジェクトはどのタイミングできるのかというと、new演算子を使ったときに、配列ならその時指定されたサイズのメモリ領域が確保され、クラスのオブジェクトならクラスのインスタンス変数全てを確保できる分のメモリ領域が確保されます。サイズが10のintの配列なら4×10=40バイト、intを2つdobuleを1つStringを2つインスタンス変数として持つクラスのオブジェクトなら4×2+8×1+8×2=32バイト、と言う形です。(さらに配列の長さやオブジェクトの情報を管理するための領域が確保されています。)
11
+ ここで注意して欲しいのは、参照型の変数の中に配列やオブジェクトが入っているわけでは無いことです。変数の中はそれらを参照する値(しばしば参照値と言われます)であって、オブジェクトそのものではないのです。では、配列やオブジェクトはどのタイミングできるのかというと、new演算子を使ったときに、配列ならその時指定されたサイズのメモリ領域が確保され、クラスのオブジェクトならクラスのインスタンス変数全てを確保できる分のメモリ領域が確保されます。サイズが10のintの配列なら4×10=40バイト、intを2つdobuleを1つStringを2つインスタンス変数として持つクラスのオブジェクトなら4×2+8×1+8×2=32バイト、と言う形です。(さらに配列の長さやオブジェクトの情報を管理するための領域が確保されています。)
12
12
 
13
13
  これを踏まえて
14
14