Javaの中の一次元、二次元配列のメモリ内の構造について詳細に説明する。
前言
Javaで配列が参照データタイプに属することを知っています。配列全体の配列要素は基本データタイプ(byte\int\shot\long\float\double\char\bollanなど)でもあり、参照データタイプでもあります。配列要素が基本データタイプの場合、この配列は1次元配列である。配列要素が参照データタイプであるとき、それはマルチ次元配列です。例えば、ある配列の中の要素値は一次元配列であり、他の異なる要素もそれぞれ一次元配列を含んでいます。これを二次元配列といいます。
1、メモリの中の簡略化された構造
メモリはメインメモリとも呼ばれ、コンピュータの5つのコンポーネント(入力デバイス、出力デバイス、演算器、コントローラ、メモリ)のメモリの一部です。Javaでは簡単にメモリをスタック、スタック、および方法エリアの3つの部分に分けることができます。ここで、方法エリアはまた定数プールと静的領域を含んでいます。下の図のように、この3つの部分の役割を説明します。
スタック 線形表の1つに属しています。先進的なポストの性質を持っています。Javaでは、ある方法の配列名のような局所変数を保存します。
積み重ねる 保管されているものは長さ、タイプが必ずしも等しくなく、一般的にはnewで作られた構造であり、配列、オブジェクトなどである。
メソッドエリア 私たちがカスタマイズした方法は様々に保管できます。
メモリの単純構造
2、一次元配列
コードを通して、一次元配列のメモリ内の表現形式を確認します。まずArayTestクラスを定義します。
元素に値を割り当てると、私たちが指定した値で元の値を上書きするのに相当します。次はこの文を重点的に見ましょう。
一次元配列のメモリ内の表現形式
3、二次元配列
実際には下の層には二次元配列という概念がなく、配列は参照データタイプであり、その要素値は基本データタイプでもあり、参照データタイプでもあることを知っている。二次元配列というのは、メモリの中で配列空間を開発したのと同じです。ただ、その要素はそれぞれ一つの配列を指しています。
次の例を挙げます。
二次元配列のメモリ内の表現形式
我々が定義した二次元配列arr 1[3][0]は、実際には、それぞれの要素が指す要素のアドレス値を格納していることがわかる。スタックに格納されるのは、配列のアドレス値である。
はい、二次元配列のメモリ構造を知ると、次の二つのコードの値が分かります。
この記事ではJavaの中の一次元、二次元配列のメモリ内の構造について詳しく説明します。Javaに関する一次元、二次元配列の内容については、以前の文章を検索してください。または、下記の関連記事を見てください。これからもよろしくお願いします。
Javaで配列が参照データタイプに属することを知っています。配列全体の配列要素は基本データタイプ(byte\int\shot\long\float\double\char\bollanなど)でもあり、参照データタイプでもあります。配列要素が基本データタイプの場合、この配列は1次元配列である。配列要素が参照データタイプであるとき、それはマルチ次元配列です。例えば、ある配列の中の要素値は一次元配列であり、他の異なる要素もそれぞれ一次元配列を含んでいます。これを二次元配列といいます。
1、メモリの中の簡略化された構造
メモリはメインメモリとも呼ばれ、コンピュータの5つのコンポーネント(入力デバイス、出力デバイス、演算器、コントローラ、メモリ)のメモリの一部です。Javaでは簡単にメモリをスタック、スタック、および方法エリアの3つの部分に分けることができます。ここで、方法エリアはまた定数プールと静的領域を含んでいます。下の図のように、この3つの部分の役割を説明します。
スタック 線形表の1つに属しています。先進的なポストの性質を持っています。Javaでは、ある方法の配列名のような局所変数を保存します。
積み重ねる 保管されているものは長さ、タイプが必ずしも等しくなく、一般的にはnewで作られた構造であり、配列、オブジェクトなどである。
メソッドエリア 私たちがカスタマイズした方法は様々に保管できます。
メモリの単純構造
2、一次元配列
コードを通して、一次元配列のメモリ内の表現形式を確認します。まずArayTestクラスを定義します。
public class ArrayTest{
public static void main(String[] args){
// a[]、b[]、c[]
int[] a = new int[]{1,2,3};
float[] b = new float[3];
String[] c = new String[4];
//
c[1] = " ";
c[2] = " ";
//
c = new String[2];
}
}
上のコードの中で、3つの配列a[]、b[]、c[]を定義しました。つまり、スタックで3つの連続する空間を配列として開発しました。配列要素の値を指定すると、それぞれの指定された値が格納されます。指定されていない場合は、デフォルトの配列タイプの初期化値、例えばb[]が格納されます。次に、3つの変数a、b、cをスタックに順次定義し、3つの変数が格納されるのは、それぞれ対応する配列のアドレス値であり、aが格納されているのは0 x 1234であり、その配列のアドレスは0 x 11234である。元素に値を割り当てると、私たちが指定した値で元の値を上書きするのに相当します。次はこの文を重点的に見ましょう。
c = new String[2];
元のスタックのc変数の保存先は0 x 12 abで、緑の配列を指していますが、この言葉を使って、スタックの中でもう一つの配列を開けたことに相当します。そして、この配列のアドレスを変数cに割り当てました。つまり、***cというときの指向変数は、元の配列を指すのではなく、新しい配列***を指します。変数が指していない既存の配列はJavaによって自動的に回収されます。これは1次元配列のメモリ内の表現です。二次元配列はメモリの中でどのように表していますか?一次元配列のメモリ内の表現形式
3、二次元配列
実際には下の層には二次元配列という概念がなく、配列は参照データタイプであり、その要素値は基本データタイプでもあり、参照データタイプでもあることを知っている。二次元配列というのは、メモリの中で配列空間を開発したのと同じです。ただ、その要素はそれぞれ一つの配列を指しています。
次の例を挙げます。
public class ArrayTest2{
public static void main(String[] args){
int[][] arr1 = new int[3][]{ {1,2,3},{4,5},{6,7,8,9} };
//
System.out.println(arr1.length);
//
System.out.println(arr1[2].length);
}
}
上のコードでは二次元配列arr 1[][]を定義して初期化しました。私たちがスタックで4つの1次元配列を開発したのと同じで、1つの1次元配列が2次元配列の要素を保存するために用いられ、2次元配列の要素がそれぞれ1つの1次元配列を指す。スタックには変数arr 1が定義されています。保存されているのはこの二次元配列のアドレスです。下の図のように。二次元配列のメモリ内の表現形式
我々が定義した二次元配列arr 1[3][0]は、実際には、それぞれの要素が指す要素のアドレス値を格納していることがわかる。スタックに格納されるのは、配列のアドレス値である。
はい、二次元配列のメモリ構造を知ると、次の二つのコードの値が分かります。
//
System.out.println(arr1.length);
//
System.out.println(arr1[2].length);
}
}
ここで、arr 1.lengthは二次元配列の長さを指していますが、二次元配列の長さはどれぐらいですか?答えは3です。一方、arr 1[2].lengthは、2次元配列の3番目の要素が指し示す配列の長さを指しており、その値は4である。この二つの違いは図と結びつけて詳しく考える必要がある。この記事ではJavaの中の一次元、二次元配列のメモリ内の構造について詳しく説明します。Javaに関する一次元、二次元配列の内容については、以前の文章を検索してください。または、下記の関連記事を見てください。これからもよろしくお願いします。