5.1.7 2 D正方形マトリクスアレイ-1

16155 ワード

横方向および縦方向の2 Dストレージデータのアレイは、2 Dアレイです.長方形(すべての行の長さが等しい)の配列の1つを「2 D正方形マトリクス配列」と呼びます.

2 D配列を宣言するときは、配列もかっこ([])としてマークされます.1次元配列と異なる箇所が2次元であることを示すために、2つの括弧で表すだけです.
🍃2 Dアレイの宣言方法
データ型[][変数名|データ型変数名[]|データ型[]変数名[]
int[][] a;     | int a[][];      | int[] a[];
double[][] b;  | double b[][];   | double[] b[];
String[][] c;  | String c[][];   | String[] c[];
2 D配列の宣言から,次元を1つ増やすたびに括弧が1つ増加することが分かる.従って,3次元以上の配列を宣言する方法を容易に推定できる.かっこ内は配列のインデックスで、2 D配列の各位置情報は2対のインデックスで構成されています.配列の位置は、垂直方向の数値延長行番号と水平方向の数値延長列番号からなり、各方向のインデックスはゼロから始まります.例えば、a[2][1]は、2次元配列aの3行目と2列目を表す.

実習

        int[] array = new int[] {3, 4, 5, 6, 7};
        
        // 배열의 선언 방법 1 - 자료형 뒤에 대괄호 2개 표기
        int [][] array1 = new int [3][4];
        int [][] array2;
        array2 = new int[3][4];
        
        // 배열의 선언 방법 2 - 변수명 뒤에 대괄호 2개 표기 
        int array3[][] = new int[3][4];
        int array4[][];
        array4 = new int [3][4];
        
        // 배열의 선언 방법 3 - 자료형과 변수명 뒤에 각각 하나의 대괄호 표기 
        int[] array5[] = new int[3][4];
        int[] array6[];
        array6 = new int[3][4];
        
        // 다양한 배열 선언 ( 기본 자료형 배열, 참조 자료형 배열)
        boolean[][] array7 = new boolean[3][4];
        int[][] array8 = new int[2][4];
        double[][] array9 = new double[3][5];
        String[][]array10 = new String[2][6]; // 참조 자료형 배열 
2 D正方行列には、オブジェクトを生成する方法が4つあります.各方法を理解するよりも重要なのは、「メモリに2 Dデータを直接格納することはできません」ということです.はい.これまで2 D配列を学習してきましたが、メモリに2 Dを格納できないので理解しにくいです.実際には、メモリには1 Dデータしか格納できません.
では、2 Dデータをどのように格納しますか?2 Dデータを1 Dデータストレージに分割する方法です.2 X 3サイズの2 Dアレイを見てみましょう.

この配列の各行は1次元配列です.配列の最初の特徴は,同じ資料型を組み合わせてしか保存できないことである.すなわち,各行は1次元配列であるため,「2次元配列は要素として1次元配列を含む1次元配列である」と考えられる.この概念を3 Dアレイに拡張すると、3 Dでは、2 Dアレイ内のオブジェクトの作成方法とメモリ内の操作について説明します.
次に、2 D正方形マトリクスアレイの4つのオブジェクト作成方法を見てみましょう.
方法1配列オブジェクトを作成して値を割り当てる
1つ目の方法は、2 D配列オブジェクトを宣言し、インデックス位置ごとに値を代入することです.ここからも配列の2つの特徴が満たされていることがわかります.まず、宣言にはどのデータ型が格納されているかがリストされ、オブジェクトの作成時に配列の長さが指定されます.
🍊2 D正方形マトリクス配列オブジェクトの作成と割り当て
データ型[][参照変数名=newデータ型[総裁][列長];
参照変数名[0][0]=値;
参照変数名[0][1]=値;
...
参照変数名[行長-1][列長-1]=値;
int[][]a = new int[2][3];
a[0][0] = 1; a[0][1] = 2; a[0][2] = 3;
a[1][0] = 4; a[1][1] = 5; a[1][2] = 6;
ここで重要なのはメモリを理解することです.上記の例では、2次元配列は、長さ3の2つの1次元配列を含む1次元配列と見なすことができる.すなわち,int[]がintを格納する1次元配列であるように,int[]]はint[]を格納する1次元配列と見なすことができる.したがって、数次元配列にかかわらず、最終的には1次元配列に分割することができます.これは、1次元データしか格納できないメモリに多次元配列を格納できる理由です.
次に、メモリの構造に戻り、次の例で生成されるメモリの構造を見てみましょう.

2次元配列の参照変数aは、2つの要素(1次元配列)を含む1次元配列であり、参照変数が指す場所には2つの部屋がある.この2つの部屋には異なる2次元配列の変位値があります.これらのビット値が指す別のhipメモリ領域には、オブジェクトの実際のデータ値が含まれます.複雑に見えますが、前の例ではメモリ構造をよく見ると理解できます.
「メモリのストレージ構造を理解してこそ、2 D配列のlengthプロパティ値を知ることができます.」配列参照変数.lengthは配列の長さを表す.すなわち、アレイの指向について部屋の個数が「アレイ参照変数」であることを知る.lengthのコマンド.では、前の例では、a.lengthはいくらですか.参照変数aが指す箇所には2格の空間がある.すなわちa.length=2である.逆に、a[0].lengthはaが指す部屋数を表すのでa[0].長さは3です.このようにa[1].length=3がわかります.
🍊2 D配列の長さを入力
System.out.println(a.length); //2
System.out.println(a[0].length); //3
System.out.println(a[1].length); //3