1つ。配列の特性について
1。Javaでは、アレイを使用するかコレクションを使用するかを確認する境界があります。操作が範囲外である場合、runtimeexceptionが取得されます。
2。アレイは特定のタイプのみを保存できます。配列はネイティブデータ型を保存できますが、コレクションはできません。コレクションは、特定のタイプのオブジェクトを処理しません。オブジェクトタイプに従ってすべてのオブジェクトを処理します。コレクションに保存されているのは、オブジェクト自体ではなくオブジェクトの参照です。
3.コレクションクラスは、オブジェクトへの参照のみを保存できます。アレイは、ネイティブデータ型を直接保存するか、オブジェクトへの参照を保存するために作成できます。コレクションでは、整数、ダブルなどのラッパークラスを使用して、ネイティブのデータ型値を保存できます。
例コード:
int a = 10; integer integer = new Integer(a); int b = integer.intvalue(); System.out.println(a = b);
4.オブジェクト配列とネイティブデータ型アレイは、使用中とほぼ同じです。唯一の違いは、オブジェクト配列が参照を保存し、ネイティブデータ型アレイがネイティブデータ型の値を保持することです。
2。配列の正しい使用
たとえば、大量のデータを保存する必要がある場合は、100の数値を読む必要がある場合は、100の変数を定義する必要があります。明らかに、コードを100回繰り返すことはあまり意味がありません。この問題を解決する方法は? Java言語は、同じデータ型の要素を保存し、100の数値を配列に保存できるコンテナである配列(配列)データ構造を提供します。この時点でアレイは大いに役立ちます〜
1。配列の利点
データの保存とデータの保存に違いはありますか?アレイの最大の利点は、すべての保存された要素を自動的に数えることができることです。数値は0から始まることに注意してください。これらのデータの操作は簡単です。
たとえば、学生番号を使用して、対応する学生を見つけることができます。
2。配列形式
フォーマット1:
要素タイプ[]配列名=新しい要素タイプ[要素の数または配列長];
例:
int [] arr = new int [5]; arr [0] = 1; arr [1] = 2;
フォーマット2:
要素タイプ[] array name = new Element Type [] {要素、要素、…};
int [] arr = new int [] {3,5,1,7}; int [] arr = {3,5,1,7};注:アレイにスペースを割り当てる場合、配列が保存できる要素の数を指定して配列サイズを決定する必要があります。配列の作成後に配列のサイズを変更することはできません。長さ属性を使用して、配列のサイズを取得できます。
3.配列変数を宣言します
配列を使用するには、アレイをプログラムで宣言し、配列の要素タイプを指定する必要があります。
=左半分:
最初に左側を書き、要素タイプがintであり、コンテナが配列を使用していることを明確にします。では、アレイをどのように識別しますか?次に、特別なシンボル[]ブラケットを使用して表現します。配列を使用するには、配列に名前を付ける必要があるため、ここから配列Xに名前を付けます。次に、等号に従います。
コードは反映しています:
int [] x
注:int x []は、配列を作成するための形式でもあります。 Arrays int [] xを宣言することをお勧めします。
4.配列を作成します
=右半分:
Newと呼ばれる新しいキーワードを使用するには。新しいものは、メモリ内のコンテナエンティティを生成するために使用されます。データストレージにはスペースが必要です。多くのデータを保存するためのスペースは、新しいオペレーターとともに開かれています。 New int [3];この3は要素の数です。右の部分は、3つの要素を保存できるメモリ内の実際の配列を定義します。
New Int [3]は2つのことを行います。まず、新しいINT [3]を使用して配列を作成し、配列変数xへの参照を割り当てます。
int [] x=new int[3];
xは何タイプですか?
すべての変数には独自のデータ型が必要です。このxはintタイプではないことに注意してください。 INTは、コンテナ内の要素のタイプを表します。次に、xは配列タイプです。
配列は個別のデータ型です。データ型は2つの主要な学校に分かれており、基本的なデータ型と参照データ型に分かれています。 2番目に大きい学校は、参照データ型です。そのため、参照された3種類のデータのいずれかと接触しました。つまり、配列タイプ[]ブラケットは配列を表します。
int[] arr = new int[5];記憶にはどうなりますか?
プログラムが実行されている場合、メモリにスペースを開く必要があります。これには、プログラムを実行する際にJava仮想マシンによって開かれたスペースが含まれます。それで、Javaはどのくらいのスペースを開きますか? Javaのメモリ構造を学習し続けます。
5。配列の初期化
方法1:オペレーターを使用しないでください
int [] arr = {1、2、3、4、5};方法2:オペレーターを新しく使用します
int [] arr2 = new int [] {1、2、3、4、5}; int [] arr3 = new int [3]; arr3 [0] = 1; arr3 [1] = 5; arr3 [2] = 6;新しいオペレーターが配列の初期化では使用されていない場合。注:次の書き込み方法は正しくありません。
int [] arr; arr = {1,2,3,4,5};この時点で、配列を初期化するには、宣言、作成、および初期化を1つのステートメントに配置する必要があります。それを分離すると、構文エラーが発生します。
したがって、次のように書くことができます。
int [] arr = {1,2,3,4,5};6。アレイトラバーサル
public static void main(string [] args){int [] x = {1、2、3};印刷効果x [0] = 1;} //これは、アレイの最初の一般的な操作です。トラバーサル}配列には、配列内の要素の数、つまり配列の長さを取得できる属性があります。配列name.length
public static void main(string [] args){int [] x = {1、2、3};印刷効果x [0] = 1;} //これは、アレイの最初の一般的な操作です。トラバーサル}7。配列の一般的な例外
配列コーナーマーカーは、境界例外を越えます。注:配列の角度マーカーは0から始まります。
public static void main(string [] args){int [] x = {1、2、3}; system.out.println(x [3]); // java.lang.arrayindexofboundsexcept}2つのヌルポインターの例外:
public static void main(string [] args){int [] x = {1、2、3}; x = null; system.out.println(x [1]); // java.lang.nullpointerexception}配列:
配列を使用するとき:これらの配列の操作を容易にするために多くの要素がある場合、最初に一時的なストレージが実行され、使用されるコンテナはアレイです。
特徴:
配列の長さは固定されています。
8。配列の共通操作
1:ケース:
配列は最大値を取り出します
/*最大値を取得する関数を定義します。
1。結果を決定します:return値タイプint
2。不明なコンテンツ:配列が決定されない最大値は、アレイが決定されません。
アイデア:
1.変数を定義し、配列のより大きな要素を記録します。
2。配列全体を反復し、配列の各要素を変数と比較します。
3.変数がそれよりも大きい要素に遭遇すると、変数が要素の値を記録させます。ループが終了すると、最大値が生成されます。
*/public static int getMax(int [] arr){//変数を定義して、より大きな値を記録し、配列の任意の要素に初期化します。 int max = arr [0]; for(int x = 1; x <arr.length; x ++){if(arr [x]> max)max = arr [x];} return max;}2:直接ソート
ケース2:直接ソートを使用して配列をソートします:
/*
[ソート]を選択します。
要素を1つのコーナーと他の要素と比較します。
内側のループの最初の端で、最も値がヘッドアングルの位置に表示されます。
*/public static void selectsort(int [] arr){for(int x = 0; x <arr.length-1; x ++){for(int y = x+1; y <arr.length; y ++)//なぜy x+1の初期化値なのか?なぜなら、あなたが比較するたびに、//はXコーナーにマークされた次の要素と比較されるからです。 {if(arr [x]> arr [y]){int temp = arr [x]; arr [x] = arr [y]; arr [y] = temp;}}}}}3:バブルソート
/*バブルソート。比較方法:2つの隣接する要素を比較します。条件が満たされている場合、位置交換が実行されます。原理:内側のループは一度終了し、最も値がテールコーナーの位置に表示されます。 */public static void bubblesort(int [] arr){for(int x = 0; x <arr.length-1; x ++){for(int y = 0; y <arr.length-x-1; y ++)//- x:比較の各参加のメタ除ductionを除外します。 // -1:コーナーマークの交差境界を避けます。 {if(arr [y]> arr [y+1]){int temp = arr [y]; arr [y] = arr [y+1]; arr [y+1] = temp;}}}}}4:半倍検索(デュアル粒子法)
/*検索効率を向上させるには、ハーフフィニッシュ検索方法を使用できます。注:この検索は、順序付けられた配列に対してのみ有効です。この方法は、バイナリ検索方法にもなりました。 */public static int halfseach(int [] arr、int key){int min、mid、max; min = 0; max = arr.length -1; mid =(max + min)/2; while(arr [mid]!= key){if(key> arr [mid])min = mid + 1; else if(key <arr])max = mid -1; if(min> max -1; (max+min)/2;} return mid;}5:アレイフリップ
/*反転は、実際には頭とテールコーナーのマークの要素の位置的置換であり、ヘッドコーナーマークが自動的に増加します。テールコーナーマークは自己廃止されています。ヘッドアングルマークが<テールアングルマークの場合、代替アクションを実行できます。 */public static void reversearray(int [] arr){for(int start = 0、end = arr.length-1; start <end; start ++、end - ){swap(arr、start、end);}} //配列の要素の位置変位を実行します。 public static void swap(int [] arr、int a、int b){int temp = arr [a]; arr [a] = arr [b]; arr [b] = temp;}11。2次元配列
配列の使用
Javaアレイの詳細な説明
トラバーサル:toString()アレイの要素を文字列として返します
sort:sort()配列を昇順で注文します
検索:BinarySearch()指定された配列内の指定された要素を検索し、要素のインデックスを返します。返品が見つからない場合(-INSERT POINT-1)注:検索機能を使用する場合、最初に配列をソートする必要があります。
二次元配列:
喫煙:
1つの変数を購入するためのお金がありません
小さなお金は、1次元配列の20変数のパックです
非常にリッチ10パック(2次元配列)2Dアレイ
2次元配列:本質的に、ストレージは1次元配列です。
配列定義:
配列タイプ[] []配列name = new Arrayタイプ[1次元配列の数] [各1次元配列の要素の数];
Javaアレイの詳細な説明
質問:なぜa.length = 3、a [0] .length = 4?
Javaアレイの詳細な説明
配列の初期化:
静的初期化:
int [][] a = new int[][]{ {12,34,45,89},{34,56,78,10},{1,3,6,4} };
動的初期化:
Javaアレイの詳細な説明
2次元配列の共通操作:
1. 2次元配列をトラバースします
2。2次元配列を要約します
class demo3 {// 2次元アレイを通過する関数関数を定義しますpublic static void printarr2(int [] [] a){// 1。(int i = 0; i <a.length; i ++){// 2。 j ++){system.out.print(a [i] [j]+"、"); }}} //関数を定義して、2次元アレイパブリックstatic long getum(int [] [] a)の要素の蓄積合計を計算する関数を計算します。 //1。(int i = 0; i <a.length; i ++){//2。1次元配列を分解して(int j = 0; j <a [i] .length; j ++){sum+= a [i] [j]; }} return sum;} //統計2次元配列の要素の数public static int getDatacount(int [] [] a){// 0。要素の数を記録するint count = 0; //1。(int i = 0; i <a.length; i ++){//2。1次元配列を分解して(int j = 0; j <a [i] .length; j ++){count ++; }} return count;} public static void main(string [] args){int [] [] a = new int [] [] {{23,4,5}、{2}、{4,5,78,56,90}}}; printArr2(a); system.out.println(); system.out.println( "蓄積された合計は:"+getsum(a)); system.out.println( "統計数の要素:"+getDatacount(a)); system.out.println( "hello world!");}}}}上記はすべてJavaアレイに関するトピックです。ご覧のとおり、Javaアレイは非常に強力なデータ構造です。