整列


配列とは?


同じタイプの複数の変数を組み合わせる

配列の長さ


Javaでは、JVMはすべての配列の長さを個別に管理します.
配列が作成されるとその長さは変更できないため、作成された配列の長さは変更されません.したがって,配列の長さは定数である.

アレイの長さの変更


配列宣言後は長さを変更できないため、配列に十分なスペースがない場合は、新しい配列を作成し、新しい配列にコピーする必要があります.

浅い放射と深い放射


配列された放射線には浅い放射線と深い放射線がある.
Cのポインタなどの概念は,コピー時に値のみをインポートするか,変数値を参照するかである.
浅いレプリケーション:アドレス値をドラッグ&ドロップ
複製の深さ:値のみ取得

浅い放射


簡単に言えば、浅いコピーを行うと、2つのオブジェクトの参照変数は同じになります.
1つの値を変更すると、2つのオブジェクトに影響します.

a,bのアドレス値は同じで,1つの値しか変化しなかったが,両者とも変化した.

ふかほうしゃ


しかし、私はこのような結果を何度もコピーしたことがありません.
元のアレイ値を変更せずにアレイ値を操作する場合は、深度コピーが必要です.
深放射線はどうしますか?

文脈

int[] arr = new int[5];

int[] tmp = new int[arr.length * 2];
// 기존 배열보다 길이가 2배인 배열 생성

for(int i = 0; i < arr.length; i++) tmp[i] = arr[i];
// arr[i]의 값을 tmp[i]에 저장

arr = tmp; //참조변수 arr를 tmp 배열을 가르키게 함.
この作業はコストが高いので、最初からレイアウトの大きさを慎重に考えたほうがいいです.
最後の行でarrの参照変数をtmpに変換し、arrとtmpは同じ配列を指す.
配列は参照変数のみでアクセスできるため、参照変数のない配列は使用できません.このような無駄な配列はゴミ収集器によって除去される.

2. System.arraycopy()


システムクラスのarraycopy()を使用すると、アレイレプリケーションを簡単かつ迅速に行うことができます.ドアより性能がいい.
  • Params :
  • src:元データの並び
  • src Pos:オリジナルデータからコピーする場所
  • dest:複製データを配置するための配列
  • destPos:destのどの位置から入れるか
  • length:コピーする長さ

  • aとbの参照値が異なることがわかります.

    clone()



    簡単に書いてあります.

    Stringスキーム


    配列のタイプがStringであっても、基本タイプの配列とあまり変わらない.
    ただし、Stringタイプは参照型変数であるため、デフォルト値はnullに初期化されます.

    char配列とString配列


    文字列String配列は、実際には「連続文字」です.
    char配列と同じ意味です.
    しかし、String配列が文字列を処理するのは、Stringクラスがchar配列に多くの機能を追加し、文字列を拡張したためである.

    char配列<>String


    char配列とStringを変換する必要がある場合があります.
    その時はそれをよく利用しましょう.
    char[] chArr = {'A', 'B', 'C'};
    String str = new String(chArr); // char[] -> String
    char[] tmp = str.toCharArray(); // String -> char[]
    しかし本では、他の配列とは異なり、char[]は出力時にStringのように出力されますが、私はアドレスを参考にしているだけです...?Javaバージョンの違いですか、IDEの違いですか.

    可変シナリオ


    Javaでは、2 D以上の配列を「配列の配列」として処理します.
    これらの特性により,配列の最後のシーケンス数の長さを可変に設定できる.
    int[][] score = new int[5][]; // 2차원의 길이는 지정하지 않는다.
    score[0] = new int[4];
    score[1] = new int[3];
    score[2] = new int[2];
    score[3] = new int[2];
    score[4] = new int[3];
    この方法でいいです.
    初めて見たので斬新でした.