詳細なJava1次元配列と2次元配列(Javaの基本的な知識)

配列は最も一般的なデータ構造であり、第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次元配列のままです。

おすすめ

転載: blog.csdn.net/weixin_43888891/article/details/113101059