コンテンツ
まず、配列の基本的な使用法
1.アレイとは
配列:同じデータ型のデータのセットを格納するコレクション。
2.配列を定義します
int []:int型の配列
double []:double型の配列
変数は、次のようなタイプで定義できます。
int [] array、arrayはこのタイプの変数であり、同じデータのセットを格納する変数です。
配列を定義するには、次の3つの方法があります。
最初:
int [] array={1,2,3,4,5,6};配列を定義して初期化します
newは書かれていませんが、実際にはオブジェクトです
予防:
int [10] array = {1,2,3,4,5,6};スペルが間違っています。int[]は型であり、角かっこに数字を追加することはできません。これは、その型を破棄することと同じです。ここ。
二番目:
int [] array2 = new int [3];
定義配列が初期化されていません
第3:
int [] array3 = new int [] {1,2,3,4,5,6};
定義して初期化する
3つの中で最も使用されているのは最初のものです
3.アレイの使用
配列の長さを取得します。
Javaでは、配列名array.lengthを使用して、現在の配列の長さを直接見つけることができます。
配列要素へのアクセス:
配列のインデックス4の要素にアクセスします
範囲外の配列要素へのアクセス:
Java言語の範囲外の直接エラー
配列要素の変更:
配列名の角かっこを使用すると、添え字の内容にアクセスできるだけでなく、添え字にデータを書き込むこともできます。
配列を出力します。
1つ目:(forループ)
2番目:(ループごとに拡張されたforループ)
forループとfor各ループの違い:
forループは添え字を取得できます。
for eachループは添え字を取得できず、コレクションでより多く使用されます
3番目のタイプ:Javaの操作配列ツールクラスArraysの助けを借りて
次に、メソッドのパラメータとしての配列
1.基本的な使用法
JVMの簡単な紹介
メモリ内のローカル変数の保存:
参照は、オブジェクトの書き込みを指していません。
この参照はオブジェクトを指していません
参照は同時に複数のオブジェクトを指すことができますか?
このコードでは、1つのオブジェクトのみを指し、オブジェクトのアドレスを格納できます。最後に、最後のオブジェクトのアドレスのみが保存されます
配列をパラメーターとしてメソッドに渡すプロセス:
印刷結果を解きます:
最初の2つの解決策:
fun2は結果を出力します:
分析例:次の図は何を表していますか
array2の参照を表します。これは、array1の参照が指すオブジェクトを指します。
次の図は、上記の例の意味を表しています。
予防:
参照が参照を指していると言うのは誤りです。参照はオブジェクトのみを指すことができます
参照はスタック上にある必要がありますか?
必ずしも、変数がスタック上にあるかどうかは、変数の性質によって決まります。ローカル変数の場合は、スタック上にある必要があります。そうでない場合、たとえば、インスタンスメンバー変数は必ずしもスタック上にあるとは限りません。
3.アレイの練習用の質問
1.2つの変数の値を交換します
public class TestDemo { public static void swap(int[] array){ int tmp = array[0]; array[0] = array[1]; array[1] = tmp; } public static void main(String[] args) { int[] array = {10,20}; System.out.println("交换前: "+array[0]+" "+array[1]); swap(array); System.out.println("交换后: "+array[0]+" "+array[1]); }
印刷結果:
2.配列内の各要素を受け取るメソッドを記述します*2
/** * 在原来的数组上扩大2倍 * @param array */ public static void enlarge(int[] array){ for (int i = 0; i <array.length ; i++) { array[i] = array[i]*2; } } public static void main(String[] args) { int[] array = {1,2,3,4,5,6,7}; enlarge(array); System.out.println(Arrays.toString(array)); }
印刷結果:
元の配列の値を2倍新しい配列に入れます
/** * 把原来数组扩大2倍的值放在一个新的数组中 * @param array * @return */ public static int[] func(int[] array) { int[] ret = new int[array.length]; for (int i = 0; i < array.length; i++) { ret[i] = array[i] * 2; } return ret; } public static void main(String[] args) { int[] array = {1,2,3,4,5,6,7}; int[] ret = func(array); System.out.println(Arrays.toString(ret)); }
3.tostring関数をシミュレートします
public static String myToString(int[] array){ String str = "["; for (int i = 0; i <array.length ; i++) { str = str+array[i]; if(i != array.length-1){ str+= ","; } } str= str + "]"; return str; } public static void main(String[] args) { int[] array = {1,2,3,4,5,6,7}; String str = myToString(array); System.out.println(str); }
印刷結果:
4.配列内で最大の要素を見つけます
public static int maxNum(int[] array){ if(array == null) return -1; if (array.length == 0) return -1; int max = array[0]; for (int i = 1; i <array.length ; i++) { if(max < array[i]){ max = array[i]; } } return max; } public static void main(String[] args) { int[] array = {12,8,14,26,5,7,8}; int max = maxNum(array); System.out.println(max); }
印刷結果:
5.配列内の指定された要素を検索します(順次検索)
public static int findNum(int[] array,int key){ for (int i = 0; i <array.length ; i++) { if(array[i] == key){ return i; } } return -1; } public static void main(String[] args) { int[] array = {2,4,5,6,11,7,8,9}; System.out.println(findNum(array, 7)); }
印刷結果:
6.配列内の指定された要素を検索します(二分探索)
二分查找的必要条件是必须有序的数列 public static int binarySearch(int[] array,int key){ int left = 0; int right = array.length-1; while(left <= right){ int mid = (left+right)/2; if(array[mid] > key){ right = mid - 1; }else if(array[mid] < key){ left = left + 1; }else{ return mid; } } return -1; } public static void main(String[] args) { int[] array = {12,14,15,16,18,23}; System.out.println(binarySearch(array, 15)); }
印刷結果:
要約:
この記事では、配列とは何か、配列を作成する方法、配列を出力する方法、および配列の簡単な使用法を簡単に紹介します。簡単な例を通して、配列についての理解を深めてください。以上が本日の内容です。ご不明な点がございましたら、いつでも非公開でメッセージをお送りいただけます。記事の問題点は積極的に修正いたします。また、皆様のご希望の知識をより早く習得していただきたいと思いますので、一緒に頑張りましょう!!!!!
私はあなたと一緒です。_