ホームページ >Java >&#&チュートリアル >Java 配列を定義および使用する方法
Array: 一連のデータを格納するコレクション同じデータ型。
int[]: int 型配列
double[]: double 型配列
変数は型ごとに定義できます。例:
int[] array, array はこの型の変数です この変数は同じデータの集合を格納する変数です。
配列を定義する 3 つの方法:
最初の方法:
int[] array = {1,2 , 3,4,5,6};
配列を定義して初期化します
new は書かれていませんが、実際にはオブジェクトです
Notes:
int[10] array = {1,2,3,4,5,6};
書き方が間違っています。int[] は type に属しており、角括弧内に数字を追加することはできません。これは破壊に相当します。ここにそのタイプがあります。
2 番目の型:
int[] array2 = new int[3];
配列を定義します初期化されていません
3 番目のタイプ:
int[] array3 = new int[]{1,2,3,4,5,6};
定義と初期化
3 つの中で最も一般的に使用されるのは最初の
配列の長さの取得:
#Java では、配列名 array.length を通じて現在の配列の長さを直接見つけることができます。配列要素へのアクセス: 配列内のインデックス 4 の要素にアクセスします。 境界外の配列要素にアクセスします。 Java言語は範囲外の場合にエラーを直接報告します配列要素を変更します: 配列名に括弧を入れると、配列の内容にアクセスできるだけでなく、 印刷配列:# 2 番目のタイプ: (for ループ)
印刷配列:
# type: (強化された for ループ、for each ループ) for ループと for each ループの違い: For ループは添え字 # を取得できます。##各ループでは添字を使用できません。コレクションではさらに多くのものが使用されます。
3 番目のタイプ: Java の配列操作ツール クラス Arrays を使用します。
JVM の簡単な紹介
ローカル変数のメモリへの保存 :
参照がオブジェクトを指していません 書き方:
This参照はどのオブジェクトも指していません
参照は同時に複数のオブジェクトを指すことができますか?
このコードでは、1 つのオブジェクトのみを指し、オブジェクトのアドレスを保存できます。最終的には、最後のオブジェクトのアドレスのみが保存されます。
メソッドのパラメータとして配列を渡すプロセス:
解決策と印刷結果:
#before 2 つの解決策:
fun2 印刷結果:
##分析例: 何を下の写真はを表していますか?
は、array2 の参照を表し、array1 の参照が指すオブジェクトを指します。
次の図は、上記の例の意味を表しています:
注:
引用部分は引用部分を指します。この文は次のとおりです。参照はオブジェクトのみを指すことができます
参照はスタック上にある必要がありますか?
必ずしもではありません。変数がスタック上にあるかどうかは、変数の性質によって決まります。ローカル変数の場合は、スタック上にある必要があります。そうでない場合、たとえば、インスタンスのメンバー変数がスタック上にある必要はありません。
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倍 * @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 倍に拡大します。 value 新しい配列
/** * 把原来数组扩大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)); }
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); }
結果を出力します:
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); }
結果の出力:
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)); }
結果の出力:
二分查找的必要条件是必须有序的数列 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)); }
結果を出力します:
以上がJava 配列を定義および使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。