整列
7887 ワード
配列とは?
同じタイプの複数の変数を組み合わせる
配列の長さ
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()を使用すると、アレイレプリケーションを簡単かつ迅速に行うことができます.ドアより性能がいい.
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];
この方法でいいです.初めて見たので斬新でした.
Reference
この問題について(整列), 我々は、より多くの情報をここで見つけました https://velog.io/@jaca/배열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol