#配列
勉強のメモとして、配列について学んだことをメモります。
##配列とは
プログラミング言語には、「いくつかの関係のあるデータをグループにして、まとめて1つの変数として扱う」仕組みががあり、それを 「配列」と呼びます。
##配列操作
配列には以下のような、「その変数が保持する特定の値や値全体に対して行える機能」があります。
- 取り出し
- 書き換え
- 削除
これらを総称して「配列操作」と呼びます。
##配列の作り方
結論からいうと配列の作り方は以下です。
要素の型[] 配列変数名 = new 要素の型[要素数];
なぜそういう書き方になるかというと、配列を作るためには、配列の宣言
、要素の代入
の2つ手順が必要です。
例として得点という意味の「score」を配列変数名にして配列を宣言する場合はこうなります。
int[] = score;
score = new int[100];
###1. 配列の宣言
配列の宣言の仕方はこちら。
要素の型[] = 配列変数名;
scoreという配列を宣言するとこうなります。
int[] = score;
###2. 要素の代入
要素の代入の仕方はこちら
配列変数名 = new 要素の型[要素数]
要素数の部分は、たとえば**ポケモン(初代)だったら151、**学校のテストで五教科の得点を入れたい場合は5がはいるといえばわかりやすいかもです。
scoreという配列に「5」という要素を代入するとこうなります
score = new int[5];
###【つまり配列はこう書く】 一連の流れを短く書く
丁寧な書き方(手順を分けた書き方)をすると上記のような形になるが、これらをひとまとめにして書くことでコードがスッキリする。
とりあえず「配列の書き方はこう書く」というのだけ叩き込んでおけばオッケーです。
要素の型[] 配列変数名 = new 要素の型[要素数];
scoreを短く書いてみます。
int[] score = new int[5];
##初期化
変数の値を取り出すには、必ずまず初期化を行う必要があり、値を代入して初期化していないとエラーが発生してしまいます。
まずは配列の宣言同様、手順を分けた長い書き方をするとこうなります。
int[] score = new int[5]; //配列scoreの宣言
score[0] = 80; // 1番目(先頭)の要素に 80 を代入
score[1] = 90; // 2番目の要素に 90 を代入
score[2] = 100; // 3番目の要素に 100 を代入
score[3] = 85; // 4番目の要素に 85 を代入
score[4] = 90; // 5番目の要素に 90 を代入
##【つまり配列はこう書く】 宣言と初期化を同時に行う
それでは上記のスッキリした書き方をしてみましょう。
以下は要素の数が 3つの場合の配列の宣言と初期化の方法です。
要素の型[] 配列変数名 = {値, 値, 値};
80、90、100、85、90 の要素の値(初期値)とする、要素数が 5 の score という名前のint型配列を宣言する場合はこうなります。
int[] score = {80, 90, 100, 85, 90};
##length
###Javaの配列におけるlength
Javaの配列には**length
**という、その配列の要素数を調べることができる いうフィールド(情報)があります。
**length
**を使用することにより、プログラマが配列の要素数を別の変数に保持するなどの管理をする必要がなくなるため、配列がとても利用しやすくなる。
###length 値の参照方法
下記のように配列の変数に対してドット「.」で繋いで記述します。
配列変数.length
こちらを用いてscoreの要素の数を調べてみたいと思います。
int[] score = {80, 90, 100, 85, 90};
System.out.println(score.length);
##【インデックス】 配列の各要素の参照・更新
###インデックスの指定の仕方
配列名の直後に[ ] をつけ、インデックス(添字)と呼ばれる数字を指定することで、要素の参照や更新をすることが出来ます。
※ 当然ながら、インデックスも0から順番に数えます。
配列変数[数字(インデックス)]
下記はscore配列の3番めの要素を引っ張り出すときの例です。
int[] score = {80, 90, 100, 85, 90};
System.out.println(score[2]);
###配列の全要素を表示する(for文を使用)
配列に入ってる要素をすべて出力してみます。
この書き方だと、「0〜score配列の要素数だけ1つずつ出力する」というというのをfor文を使って書いています。
####要素のインデックス番号をすべて抽出
下記は要素のインデックス番号をすべて抽出する場合です。
int[] score = {80, 90, 100, 85, 90};
// インデックス番号をすべて表示
for (int i = 0; i < score.length; i++) {
System.out.println(i);
}
####配列の中の要素の値をすべて抽出
下記は配列の中の要素の値をすべて抽出する場合です。
int[] score = {80, 90, 100, 85, 90};
// 要素の値をすべて表示
for (int i = 0; i < score.length; i++) {
System.out.println(score[i]);
}
###合計点を求めるプログラム
すべてのscoreを合計して出力するプログラムを書きました。
処理の流れは..
- int[]型の変数scoreの宣言と初期化
- 合計スコアを宣言し、0で初期化する
- scoreの要素数だけ計算をおこなう
- 計算された得点を表示する
という流れになります。
// int[]型の変数scoreの宣言と初期化
int[] score = {80, 90, 100, 85, 90};
// 合計スコアを宣言し、0で初期化する
int sum = 0;
//scoreの要素数だけ計算をおこなう
for (int i = 0; i < score.length; i++) {
sum = sum + score[i];
}
//計算された得点を表示する
System.out.println(sum);
for文の内容は実質、**80 + 90 + 100 + 85 + 90
**を行ったということなので、出力結果は上記のようになりました。