[ジャワ]配列は?

21352 ワード

配列とは?


同じタイプの複数の変数を処理するグループ

意味
学生の試験点数を保存する場合は、変数に名前を付けてロードします.
では、ある学生の点数を呼び込むと、変数の名前を覚えなければなりません.
配列を使用してこれらの問題を解決します.

パターンフィーチャー

  • インデックス演算子[]を使用して、
  • をすばやく参照
  • 物理位置は議論位置と同じ
  • である.
  • の並び順は0からの
  • である.
  • javaは、オブジェクト配列を実現するArrayList
  • をよく使用する.

    索引演算子[]を使用したクイック参照


    配列は順序付き資料型で,順序は0から配列長−1である.該当する順序の配置を呼び出すことができます.

    物理的位置と論理的位置が同じ


    int[] arr = new int[5];

    前述したように、整数を格納する8バイトデータはarrの名義で5個格納されており、定義上8バイトデータの隣に別の空間があるデータと同様に、コンピュータが格納する位置も同じである
    当然のことだと思うかもしれませんが、Javaの他の参照データLinkedListの物理的位置と論理的位置は異なります.

    アレイの宣言と初期化


    アレイ宣言


    int[] arr1 = new int[10]; int arr2[] = new int[10];


    データ型を左側に置き、[]で変数が資料型であることを示します.
    配列の名前を書くと、=newと後で書きます(newの使用理由は後述します)
    このデータ型の個数を[]に書くべきです
    変数を書くとき、変数の名前と[]の位置が変わってもかまいません.

    アレイの初期化

  • 配列宣言とともにデータ型に基づいて初期化(整数0、実数0.0、オブジェクトnull)
  • は、必要に応じて初期値
  • を指定することができる.
    int[] numbers = new int[]{10, 20, 30}; //個数を省いて、個数を入れる個数は必ず個数を入れなければなりません int[] numbers = {10, 20, 30}; // new int[]は省略できます int[] ids; ids = new int[] {10, 20, 30}; // 宣言後に配列を作成する場合はnew int[]を省略することはできません

    タイルの使用


    配列内の変数のように出力すると、どのような結果になりますか?

    上のように出てきましたその理由は,配列がどこに格納されているかを知ることによって理解できる.
    プログラム実行時に変数を格納する場所はstackです.配列および参照型データ型およびオブジェクトはheapに格納され、スタック内の変数にはheapのアドレス値が格納されます.したがって,生成時にnew keywideを用いる.
    配列の下部と要素にアクセスするには、次のアクセスが必要です.
  • []インデックス演算子を使用-ストレージアレイ要素のメモリ位置を計算し、
  • を配置します.
  • 配列による合計
  • class Main {
      public static void main(String[] args) {
        int[] arr = new int[5];
        int sum = 0;
    
        // 1부터 5까지 배열에 넣는 과정의 반복문이다
        for(int i = 0, num= 1; i<arr.length; i++, num++){
          arr[i] = num;
        }
    
        // 배열의 각 요소에 접근하여 모든 요소를 더하는 변수이다
        for(int i = 0; i<arr.length; i++){
          sum += arr[i];
        }
    
        // 합계를 출력하는 변수이다
        System.out.println("합계 : "+ sum);
      }
    }

    配列の長さと要素の数が異なる


    宣言
  • アレイはどれだけのメモリを割り当てるかを宣言しますが、実際の要素(データ)
  • がない場合もあります.
  • 配列のlength属性は配列の個数を返すので、要素の個数
  • とは異なる.
  • lengthの使用エラー:
  • class Main {
      public static void main(String[] args) {
        double[] dArr = new double[5];
    
        dArr[0] = 1.1;
        dArr[1] = 2.1;
        dArr[2] = 3.1;
    
        // 각 요소들을 모두 곱하여 저장하는 변수
        double mtotal = 1;
        for(int i = 0; i<dArr.length; i++){
          
          mtotal *= dArr[i];
          System.out.println("dArr의 "+i+"번째 요소 : "+dArr[i]);
          
        }
        System.out.println("요소들의 곱 : "+mtotal);
        return ;
      }
    }

  • 望ましい結果


  • 実績


  • 各要素の写真を印刷

  • 以上のように、アレイの宣言時に出力が0.0であることがわかります.特定の要素を初期化しても、他の要素は初期化状態にあるため、arr.lengthと宣言された個数に差があることがわかります.
  • 要素が0.0の場合、「外出」
  • class Main {
      public static void main(String[] args) {
        double[] dArr = new double[5];
    
        dArr[0] = 1.1;
        dArr[1] = 2.1;
        dArr[2] = 3.1;
    
        // 각 요소들을 모두 곱하여 저장하는 변수
        double mtotal = 1;
        for(int i = 0; i<dArr.length; i++){
          if(dArr[i] == 0.0){
            break;
          }
          
          mtotal *= dArr[i];
          System.out.println("dArr의 "+i+"번째 요소 : "+dArr[i]);
          
        }
        System.out.println("요소들의 곱 : "+mtotal);
        return ;
      }
    }
  • 要素を保持するカウント変数
  • class Main {
      public static void main(String[] args) {
        double[] dArr = new double[5];
        int count = 0;
    
        dArr[0] = 1.1; count++;
        dArr[1] = 2.1; count++;
        dArr[2] = 3.1; count++;
    
        // 각 요소들을 모두 곱하여 저장하는 변수
        double mtotal = 1;
        for(int i = 0; i<count; i++){
          
          mtotal *= dArr[i];
          System.out.println("dArr의 "+i+"번째 요소 : "+dArr[i]);
          
        }
        System.out.println("요소들의 곱 : "+mtotal);
        return ;
      }
    }
    上記のコードを使用して、必要な結果を生成できます.

    強化されたfor文の使用


    0からn-1の配列のn個の要素を順番に使用する場合、非常に簡単です.
  • で使用するフォーマット
  • for(변수: 배열){
    
    }
  • 文字配列を作成してA-Zに保存し、
  • を再出力します.
    class Main {
      public static void main(String[] args) {
        char[] alphabets = new char[26];
        char ch = 'A';
    
        for(int i = 0; i<alphabets.length; i++){
          alphabets[i] = ch++;
        }
    
        for(char alpha : alphabets){
          System.out.println(alpha +","+ (int)alpha);
        }
        
        return ;
      }
    }
  • 運転結果