配列は最も一般的なデータ構造であり、第1レベルの配列、2次元配列、および多次元配列に分けられます。これは、同じデータ型の要素を識別子でカプセル化する基本型のデータシーケンスまたはオブジェクトシーケンスです。
目次
一次元配列
配列要素のデータ型によって、配列のデータ型が決まります。これは、基本的なデータ型やその他の参照型にすることができます。記号「[]」は、変数が配列型変数であることを示します。単一の「[]」は、1次元配列を意味します。
1次元配列を作成する
1次元配列を宣言する方法は2つあります。
数组元素类型 数组名字[];
int a[];
数组元素类型[] 数组名字;
int[] b;
配列を宣言すると、配列の名前と要素のデータ型のみが与えられ、メモリスペースが割り当てられないため、配列を宣言した後は、その要素にアクセスできません。
配列を宣言するときに、配列にメモリスペースを割り当てることができます。これは、宣言とメモリを一緒に割り当てて実行するためです。
数组元素类型 数组名 = new 数组元素类型[数组元素的个数];
int month[] = new int[12];
1次元配列に値を割り当てます
配列は、基本的なデータ型と同じように初期化できます。つまり、初期値が割り当てられます。配列の初期化では、配列内の各要素を個別に初期化できます。
配列の初期化には、次の3つの形式があります。
int a[] = {
1,2,3}; // 第一种方式
int[] b = new int[]{
4,5,6}; // 第二种方式
int c[] = new int[3]; // 第三种方式
c[0] = 7; // 第一个元素赋值
c[1] = 8; // 第二个元素赋值
c[2] = 9; // 第三个元素赋值
配列の長さを取得します
配列がスペースを割り当てる場合がありますが、現時点では、arr.lenthを介して長さを取得できることを指定していません。
int a[] = {
1,2,3};
System.out.println(a.length);
よくある間違い
二次元配列
2次元配列は、2次元テーブルを表すためによく使用されます。最初の要素は要素が配置されている行を表し、2番目の添え字は要素が配置されている列を表します。
2次元配列を作成します
2次元配列を宣言する方法は2つあります。
数组元素类型 数组名字[][];
int tdarr1[][];
数组元素类型[ ][ ] 数组名字;
int[][] tdarr2;
1次元配列と同様に、2次元配列は、宣言時にメモリスペースが割り当てられません。また、要素にアクセスする前に、newキーワードを使用してメモリを割り当てる必要があります。
メモリを割り当てる方法は2つあります。
int a[][];
a = new int[2][3]; // 直接分配行列
int b[][];
b = new int[2][]; // 先分配行,不分配列
b[0] = new int[2]; // 给第一行分配列
b[1] = new int[2]; // 给第二行分配列
注:2次元配列を作成するには、行の長さのみを宣言でき、列の長さは宣言できません。行の長さを宣言する必要があります!!!
2次元配列に値を割り当てます
int tdarr1[][] = {
{
1,3,5},{
4,6,7}}; // 第一种方式
int tdarr2[][] = new int[][] {
{
1,3,5},{
4,6,7}}; // 第二种方式
int tdarr3[][] = new int[2][3]; // 第三种方式
tdarr3[0] = new int[] {
1,2,3}; // 给第一行分配一个一维数组
tdarr3[1][0] = 63; // 给第二行第一列赋值为63
tdarr3[1][0] = 10; // 给第二行第一列赋值为10
tdarr3[1][0] = 7; // 给第二行第一列赋值为7
この例からわかるように、2次元配列の各要素も配列であるため、最初の直接割り当て方法では、各要素が1次元配列であるため、中括弧の内側に中括弧があります。2番目の方法ではnewを使用します。この方法は、1次元配列に似ています。3番目のタイプは非常に特殊です。メモリスペースが割り当てられた後、1次元配列を行に直接割り当てるか、行の各要素に個別に値を割り当てるかの2つの割り当て方法があります。
2次元配列のシナリオを使用する
public static void main(String[] args) {
char arr[][] = new char[4][]; // 创建二维数组,数组长度(行)为4
arr[0] = new char[] {
'春', '眠', '不', '觉', '晓' }; // 为每一行赋值
arr[1] = new char[] {
'处', '处', '闻', '啼', '鸟' };
arr[2] = new char[] {
'夜', '来', '风', '雨', '声' };
arr[3] = new char[] {
'花', '落', '知', '多', '少' };
System.out.println("---横版---");
for (int i = 0; i < 4; i++) {
// 循环4行
for (int j = 0; j < 5; j++) {
// 循环5列
System.out.print(arr[i][j]); // 输出数组中的元素
}
if (i % 2 == 0) {
System.out.print(","); // 如果是1,3句输出逗号
} else {
System.out.print("。"); // 如果是2,4句输出句号
}
// i行结束则换行(注意在哪个循环内执行)
System.out.println();
}
System.out.println();
System.out.println("---竖版---");
for (int j = 0; j < 5; j++) {
// 列变行
for (int i = 3; i >= 0; i--) {
// 行变列,反序输出
System.out.print(arr[i][j]); // 输出数组中的元素
}
System.out.println(); // 换行
}
// 第5行单独输出标点符号
System.out.println("。,。,"); // 输出最后的标点
}
実行結果:
多次元配列
1次元配列よりも高次元のものを多次元配列と呼びます。理論的には2次元配列も多次元配列に属します。Javaは3次元配列、4次元配列、その他の多次元配列もサポートしています。他の多次元配列を作成する方法は、2次元配列の方法と似ています。
int a1[][][] = new int[3][4][5]; // 创建三维数组
char b1[][][][] = new char[6][7][8][9]; // 创建四维数组
不規則な配列
不規則な配列はJavaでサポートされています。たとえば、2次元配列では、異なる行の要素の数が異なる場合があります。
int a[][] = new int[3][]; // 创建二维数组,指定行数,不指定列数
a[0] = new int[5]; // 第一行分配5个元素
a[1] = new int[3]; // 第二行分配3个元素
a[2] = new int[4]; // 第三行分配4个元素
不規則な2次元配列のすべての要素を出力するためのコード例:
public static void main(String[] args) {
int a[][] = new int[3][]; // 创建二维数组,指定行数,不指定列数
a[0] = new int[] {
52,64,85,12,3,64}; // 第一行分配6个元素
a[1] = new int[] {
41,99,2}; // 第二行分配3个元素
a[2] = new int[] {
285,61,278,2}; // 第三行分配4个元素
for (int i = 0; i < a.length; i++) {
System.out.print("a[" + i +"]中有" + a[i].length + "个元素,分别是:");
for (int tmp : a[i]) {
//foreach循环输出元素
System.out.print(tmp + " ");
}
System.out.println();
}
}
出力結果:
アレイの基本操作
1次元配列のトラバースは非常に単純で理解しやすいです。2次元配列のトラバースには2層のforループが必要です。配列の長さは、配列のlengthプロパティから取得できます。
配列を反復処理します
コード例:
public static void main(String[] args) {
int b[][] = new int[][] {
{
1},{
2,3},{
4,5,6}}; // 定义二维数组
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[i].length; j++) {
System.out.print(b[i][j]);
}
System.out.println();
}
}
出力結果:
この文法を習得する必要があります。2次元配列a [] []がある場合、a.lengthは配列の行数を返し、a [0] .lengthは最初の行の列数を返します。同様に、a [n]はn + 1行目の列数を返します。2次元配列は不規則な配列である可能性があるため、長さプロパティを使用して、をトラバースするときにループの数を制御することをお勧めします。二次元配列。
配列要素の塗りつぶしとバッチ置換
配列内の要素の定義が完了した後、Arraysクラスの静的メソッドfill()を使用して、配列内の要素を割り当てることができます。これは、塗りつぶしと置換の効果があります。fill()メソッドは、 int型に指定されたint値配列の各要素。
構文は次のとおりです。
Array.fill(int[] a , int value)
a:割り当てられる配列
value:配列内のすべての要素の値が格納されます
コード例:
public static void main(String[] args) {
int arr[] = new int[5];
arr[0] = 9;
Arrays.fill(arr, 8);
for (int i = 0; i < arr.length; i++) {
System.out.println("第" + i + "个元素是: " + arr[i]);
}
}
出力結果:
難しさ
配列インデックスが0から始まるのはなぜですか?
これは、0から始まるアセンブリ言語の伝統を継承するためであり、コンピューターが二項演算と検索を行うのに便利です。
多次元配列の長さ
lengthプロパティは、1次元配列の長さのみを示すことができます。2次元配列を使用すると、2次元配列は実際には「1次元配列[1次元配列]」形式に変換されます。 、1次元配列の要素は1次元配列のままです。