Javaエントリノート-配列(2)

目次

前書き

アレイ導入の概要 

配列定義形式

配列の初期化の概要

動的初期化

配列要素の割り当てと使用

静的初期化

二次元配列

動的初期化

静的初期化

アレイ内のメモリ割り当て

配列の一般的な例外

配列インデックスが範囲外

ヌルポインタ例外

配列の一般的な操作

配列をトラバースします

最大を取得します 

 


前書き

プログラムがint型の5つの変数を必要とする場合、私たちが学んだ基本的な知識を使用して、次のコードを使用して変数を宣言できます。

int a1,a2,a3,a4,a5;

しかし、ある日突然、100個の変数を宣言する必要がある場合、どうすればよいでしょうか。百回もコピーできませんよね?

このソリューションを解決するには、配列の知識を学ぶ必要があります。

 

配列は、同じタイプの変数で構成される複合データ型であり(配列は同じタイプの変数のコレクションです)、同じタイプのこれらの変数は、配列の要素またはユニットと呼ばれます。

アレイ導入の概要 

 

  1. 一度に多数の変数を宣言します
  2. 保存するのと同じタイプのデータ

 

配列定義形式

1次元配列を宣言するための2つの形式があります

 

フォーマット1:

//数组类型 [] 数组名
int [] arr;
//定义一个数组,数组名为arr

 

フォーマット2:

//数组类型 数组名[] 
char arr[];
//定义一个char类型的变量,变量名为arr的数组

 

一度に複数の配列を宣言できます。

int [] a,b,c,d,e;

 

配列の初期化の概要

Javaの配列は、使用する前に初期化する必要があります 

いわゆる初期化:配列内の配列要素にメモリスペースを割り当て、各配列要素に値を割り当てることです

 

動的初期化

動的初期化:初期化中に配列の長さのみを指定すると、システムは初期化値を配列に割り当てます

形式:データ型[]変数名=新しいデータ型[データ長];

 

デモンストレーション:

int [] arr = new int[3];

分析:

  • int []:これがint型の配列であることを示します
  • arr:配列名
  • 新規:アレイのメモリスペースを申請します
  • int [3]:これはint型の配列であり、3は配列の長さであり、配列に格納されている要素の数です。

 

配列要素の割り当てと使用

 

割り当てる前に、インデックスを理解する必要があります。インデックスは、配列内のデータの番号付け方法です。

  • 機能:インデックスは配列内のデータにアクセスするために使用されます。配列名[インデックス]は変数名と同等であり、特別な変数名です。
  • 機能1:インデックスは0から始まります
  • 特徴2:インデックスは継続的です
  • 特徴3:インデックスは増加するたびに1つずつ増加します

 

 

配列内の要素にアクセスしようとします。値を割り当てる前は、配列内のデータはすべて0です。

 

 

配列の割り当て

形式:配列名[インデックス] =定数

デモンストレーション:

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;

 

 

静的初期化

静的初期化:初期化中に各配列要素の初期値を指定し、配列の長さはシステムによって決定されます

  • 形式:データ型[]変数名=新しいデータ型[] {データ1、データ2、データ3、...};
  • 例:int [] arr = new int [] {1,2,3};

 

  • 簡略化された形式:データ型[]変数名= {データ1、データ2、データ3、...};
  • 例:int [] arr = {1,2,3};

 

 

複数の静的配列の初期化:

int arr[] = {1,2,3},arr1 [] ={5,6,7};

 

二次元配列

2次元配列は複数の1次元配列で構成されており、Excelの表で2次元配列を鮮やかに表現できます。

この表のように、2次元配列を表すことができます(図は、3行2列の2次元配列を示しています)

 

2次元配列を宣言します。

  • 配列型配列名[] [];
  • 配列タイプ[] []配列名; 

 

動的初期化

2次元配列が宣言された後、新しい操作は配列にスペースを割り当てます。

int arr[][] = new int[3][2];

アピールによって作成された2次元配列arrは、3行2列を表すことができます。 

 

2次元配列割り当てのデモンストレーション:

arr[0][0] = 1;
arr[0][1] = 1;

 

静的初期化

静的初期化では、1ビット配列ごとに異なる長さの要素を割り当てることができます

形式:データ型2次元配列名[] = { {最初の行の要素}、{2番目の行の要素}}

デモンストレーション:

int arr[][] = {
        {1},
        {2,3,4},
        {5,6}
};
System.out.println(arr[0][0]);
System.out.println(arr[2][1]);

 

アレイ内のメモリ割り当て

Javaプログラムを実行しているときは、メモリにスペースを割り当てる必要があります。計算の効率を上げるために、各エリアには特定のデータ処理方法とメモリ管理方法があるため、スペースは異なるエリアに分割されます。

配列にメモリユニットを割り当てた後、インデックスなしで配列を出力すると、メモリユニット内の配列のアドレスを確認できます。

char型配列の場合、System.out.println()が配列の名前を出力するとき、メモリユニットのアドレスではなく、配列内のすべての要素の値を出力することに注意してください。

char型配列のメモリユニットのアドレスを出力する場合は、配列と文字列を連結する必要があります。

char a[] = {'h','e','l','l','o',' ','w','o','r','l','d'};
System.out.println(""+a);

 

 

int配列を例にとると、初期化時にデフォルト値がストレージスペースに追加されます。

 

  • 整数:デフォルト値0
  • 浮動小数点数:デフォルト値は0.0です
  • ブール値:デフォルト値はfalse
  • 文字:デフォルト値ヌル文字
  • 参照データ型:デフォルト値はnullです

 

注意

  • スタックメモリに格納されている変数はローカル変数であり、使用すると消えます 
  • ヒープメモリには、スペースによって追加されたデフォルト値が格納され、すべての新しいものにはアドレス値があります
  • 使用後はガベージコレクターによりリサイクルされます

 

配列内の要素に値を割り当てると、ヒープメモリが変化します

配列がメモリ空間を作成したら、ある配列を別の配列に割り当てます(2つの配列タイプは同じである必要があります)。

複数の配列が同じアドレスを指します。

したがって、配列arr2の要素を変更すると、配列arrの要素も変更されていることがわかります。 

 

2次元配列でのメモリ割り当て

 

配列の一般的な例外

  • インデックスの範囲外:インデックスの範囲外の問題によると、配列に存在しないインデックスに対応する要素へのアクセス
  • ヌルポインタ例外:アクセスされた配列がヒープメモリ内のデータを指さなくなり、ヌルポインタ例外になります

 

配列インデックスが範囲外

ArrayIndexOutOfBoundsException

3つの空間位置のみを作成しましたが、4番目の空間の変数を取得したいとします。

 

 

ヌルポインタ例外

NullPointerException

配列のスタックメモリにメモリユニットアドレスがありません。それでもメモリユニットから要素を取得すると、nullポインタエラーが報告されます。

 

 

配列の一般的な操作

配列をトラバースします

長さは、配列内の要素の数を取得するために使用されます

forループで、arr.length使用して条件付き判断を行います

int arr[] = {1,2,3,4};

for (int i = 0 ;i<arr.length;i++){
    System.out.println(arr[i]);

 

最大を取得します 

int arr[] = {11,2,333,44};
        int max = arr[0];

        for (int i = 0 ;i<arr.length;i++){
            if(arr[i] > max){
                max = arr[i];
            }
        }
        System.out.println(max);

 

 

 

 

おすすめ

転載: blog.csdn.net/weixin_41924764/article/details/110262245