JAva配列の初期化とメモリ分析
≪配列|Array|emdw≫:同じタイプの識別子名でカプセル化されたオブジェクト・シーケンスまたは基本タイプのデータ・シーケンス.
1次元配列の宣言:1 int[]a 1; 2 int a1[ ]
2つのフォーマットの意味は同じで、2つ目はcとc++プログラマーの習慣に合っています.1つ目は、タイプが「int型配列」であることを示すより合理的かもしれません.
コンパイラでは配列のサイズを指定できません.配列を宣言するときはint a[5];//不正などの長さ(要素の個数)を指定できません.初期化するときはサイズを指定できます.
Javaの配列は必ず初期化してから使用することができ、初期化とは配列の配列要素にメモリを割り当て、各配列要素に値を割り当てることである.これで、配列のリファレンス(リファレンスにストレージスペースが割り当てられている)が1つだけで、配列オブジェクト自体にスペースが割り当てられず、初期化されてから対応するストレージスペースが作成されます.
初期化の2つの方法:静的初期化:初期化時に私たち自身が各配列要素の初期値を指定し、システムが必要な配列長を決定する.フォーマット:配列名=new配列タイプ[]{要素1,要素2,要素3...要素n}; a1 = new int{1,2,3,4,5}; 簡略化文法:配列名={要素1,要素2,要素3...要素n}; a1 = {1,2,3,4,5}; 動的初期化:初期化時に配列の長さを指定し、システムによって配列要素に初期値を割り当てます.フォーマット:配列名=new配列タイプ[配列長]; a1 = new int[ 8];
注意:静的および動的初期化を同時に使用することはできません.つまり、配列の長さと要素を同時に指定することはできません.配列の長さが確定すると、変化することはできません.つまり、配列は定長です.
すべての配列には固有のメンバーがあり、lengthは配列名を通ります.lengthは配列メンバーの数を得ることができます.JAva配列の下付き文字は0から始まり、最大下付き文字は配列名である.length-1.この境界を超えると、異常配列のフットマークの境界外異常(ArrayIndexOutOfBoundsException)が発生します.
メモリ分析:
例:
a 1の初期値が与えられるが、a 2は後にa 1配列に与えられ、2つの配列は同じスタックアドレスを指すため、a 2配列の値が変化し、a 1も変化する.
1次元配列の宣言:1 int[]a 1; 2 int a1[ ]
2つのフォーマットの意味は同じで、2つ目はcとc++プログラマーの習慣に合っています.1つ目は、タイプが「int型配列」であることを示すより合理的かもしれません.
コンパイラでは配列のサイズを指定できません.配列を宣言するときはint a[5];//不正などの長さ(要素の個数)を指定できません.初期化するときはサイズを指定できます.
Javaの配列は必ず初期化してから使用することができ、初期化とは配列の配列要素にメモリを割り当て、各配列要素に値を割り当てることである.これで、配列のリファレンス(リファレンスにストレージスペースが割り当てられている)が1つだけで、配列オブジェクト自体にスペースが割り当てられず、初期化されてから対応するストレージスペースが作成されます.
初期化の2つの方法:静的初期化:初期化時に私たち自身が各配列要素の初期値を指定し、システムが必要な配列長を決定する.フォーマット:配列名=new配列タイプ[]{要素1,要素2,要素3...要素n}; a1 = new int{1,2,3,4,5}; 簡略化文法:配列名={要素1,要素2,要素3...要素n}; a1 = {1,2,3,4,5}; 動的初期化:初期化時に配列の長さを指定し、システムによって配列要素に初期値を割り当てます.フォーマット:配列名=new配列タイプ[配列長]; a1 = new int[ 8];
注意:静的および動的初期化を同時に使用することはできません.つまり、配列の長さと要素を同時に指定することはできません.配列の長さが確定すると、変化することはできません.つまり、配列は定長です.
すべての配列には固有のメンバーがあり、lengthは配列名を通ります.lengthは配列メンバーの数を得ることができます.JAva配列の下付き文字は0から始まり、最大下付き文字は配列名である.length-1.この境界を超えると、異常配列のフットマークの境界外異常(ArrayIndexOutOfBoundsException)が発生します.
メモリ分析:
例:
public class ArrayInit{
public static void main(String[] args){
int[] a1 ={1,2,3,4,5};
int[] a2;
a2 =a1;
for(int i =0;i<a2.length;i++)
a2[i]=a2[i]+1;
for(int i =0;i<a1.length;i++)
System.out.println("a1["+ i +"] =" + a1[i]);
}
}
:
a1[0]=2
a1[1]=3
a1[2]=4
a1[3]=5
a1[4]=6
a 1の初期値が与えられるが、a 2は後にa 1配列に与えられ、2つの配列は同じスタックアドレスを指すため、a 2配列の値が変化し、a 1も変化する.