美人すぎない化粧品販売員がアプリ開発を目指す

Javaの構文、オブジェクト指向、APIなど、プログラミング初心者の私がアプリ開発までに理解したことをまとめたブログ

配列の基本

配列とは?

 いくつかの関係あるデータをグループにして、まとめて1つの変数に入れること

また、そうすることで、

 きちんとした構造に整理して、後から特定の値を取り出すことが出来る

 

配列のイメージ・・・0から番号がついた箱が並んでいて、その箱1つ1つにデータを入れていく→その並んだ箱を1つのまとまりとして扱うことが出来るので便利!

[0][1][2][3][4][5]

箱自体→要素

箱についている番号→添え字

 

〈配列のルール〉

同じまとまりとして扱いたいので(「配列の全ての合計」「大きい順に並べ替え」など)、

配列に含まれる各要素の型(int型double型など)は全て揃える

 

〈配列のつくり方〉

 ① 配列変数の宣言(これから配列をつくりますよーとパソコンに伝える)

 ex. int[ ] score;→int型の要素を代入出来る型を宣言

    int・・・要素の型  score・・・配列変数名(任意の名前を指定)

         

 ② 要素を作成する(箱の中に入れる実体を作る・・ここでほんとの配列を作る作業)

  ex. 「int型要素を5つ作成後、配列変数scoreに代入する」

    score=new int[5];

newとは何か?(new演算子)

 指定された型の要素を[ ]内の数値の分だけ作成する

  ・・・要は配列の実体を作成するということ

 

※①と②の記述は省略できる

(コードは効率よく書くのが目的!省略できるところは省略する)

 ① int[ ]score;                              →省略後 int[ ]score=new int[5];  

② score=new int[5]

 

・配列の長さを調べたいとき

 〈構文〉 配列変数名.length

ex. int nagasa=score.length;

      System.out.println("nagasa");

出力→5・・配列の長さ

 

コンストラクタ(自分で初期値を設定する処理・・・詳しくは後で記述)をしなければ、

 配列には初期値(何も代入されていない状態に入る値)として

 自動で0(int型配列)/false(boolean型配列)/null(String型配列)が代入される

★これは、もし配列の中に何も値を代入せずに出力させた場合、自動で代入された初期値が出力されるということ

 ex. int[ ]score=new int[5];

     System.out.println(score[0]);

→[0]には何も値を代入していないので、0(自動初期値)が出力される

 

※ これも記述を省略できる

 int[ ] score=new int[3];    →省略後  int[ ] score={20,30,40};

int[0] score=20;

int[1] score=30;

int[2] score=40;

 

配列要素を最初から最後まで順に代入していきたい時

 for文の終了条件に、配列変数名.lengthを用いる

〈構文〉

  for (int i=0;i<配列変数名.length;i++){

 

→拡張for文でも書き換え可能

(ループするたびに要素が変数名(value)に入るようにして、順々に代入していく)

 for (int value:score){System.out.println(value);}

   int・・要素の型

 value・・その場で決めた任意の変数名

 score・・配列変数名

 →この処理をすると要素は変数名に入っていくので、出力は変数名(value)でOK!

 

★配列は参照型。

参照型とは?

要素そのものではなく、要素が入っている先頭要素の番地情報が入っている

 

int型配列 int[ ]→参照型変数

int型   int→基本型変数(番地情報ではなく、データそのものが箱の中に入っている)

 

ex. int [ ]a={1,2,3};

         a=null;//ここで参照が切れる

                     (番地情報を指していただけなので、その接続が切れる

                       →すなわち、何も指さなくなる)

そうすると、int [ ]a={1,2,3}という要素が並んだ箱(配列)は、どの変数からも指されないので、自動でゴミ箱行きになる(ガベージコレクション)

 

・配列要素の影響範囲ルール

 宣言されたブロック内のみ使用可。そこから出ると配列要素はゴミになる

 ex.boolean b=true;

   if(b==true){

               int[ ] i={1,2,3};

            }

→これ以降のブロックでは、int[ ] i={1,2,3};は使えない