昔、バスケの練習で何パターンかオフェンスの練習していて、何故この動きが必要かあまり理解せずやっていたら試合で防がれ、何故防がれたかしっかり理解できず、攻め倦んで監督から怒りの〇〇を喰らった記憶がある。
実務のテストでは、配列を良く使いました。
例の如く何となくでやっていました。
問題なく動いていましたが、理解は浅く、何がどうとかいう説明は、、、
できません。。。
結構惨めな思いをしたのも前進する為の糧。
お品書き
- 配列って?
- 配列の生成
- 配列の初期化
- 多次元配列
配列って?
同じデータ型の変数を複数まとめて管理するもの
配列の生成にはnewを使う。生成時にデフォルト初期値が設定される。
(0、' '(空文字)、false)
データ型[] 配列名 = new データ型[要素数];
例えば点数を3つまとめて管理するなら
int[] score = new int[3] ;
配列は参照型のため、変数には参照値が入る。
※作った変数scoreのイメージ図
score |
---|
( ) |
new int[3]のイメージ図
int | int | int |
---|---|---|
0 | 0 | 0 |
newしたデータ型の値は「0」なので初期化して値を代入します。
score[0] = 80 ;
[]
の数字を添え字といい0起算で何番目かを表している。
そしてデータ型の要素数が3
なので0から2
まで初期化する。
0 | 1 | 2 |
---|---|---|
80 | 0 | 0 |
◆配列Sample
class Array{
public static void main (String[] args){
int [] score = new int[3];
score[0] = 80;
score[1] = 100;
score[2] = 90;
.
.
.
}
}
配列の初期化
データ型[] 配列名 = { 値1, 値2,・・・}
初期化する値は先ほど同様0番目から始まる。
String[] name = {"大輔","湊丞","花帆"};
System.out.println(name[0] + "さん:" + score[0] + "点");
System.out.println(name[1] + "さん:" + score[1] + "点");
System.out.println(name[2] + "さん:" + score[2] + "点");
System.out.println("受験者数:" + score.length + "名"); //scoreの要素数を取得
配列名.lengthで配列の要素数を取得できる。
C:\Java\1>javac Array.java
C:\Java\1>java Array
大輔さん:80点
湊丞さん:100点
花帆さん:90点
受験者数:3名
◆多次元配列
配列の配列をつくる。
データ型[][] 配列名 = new データ型[][];
例:int[][] allScore = new int[2][3];
newしたデータ型の[ ][ ]
配列は2行3列
まず、
allScoreという変数があって。。。
この子は行を見に行きます。
allScore |
---|
( ) |
データ型が2行。。
この子たちは列を見に行きます。
allScore[0] | ( ) |
---|---|
allScore[1] | ( ) |
一瞬何番目の何番目がわからなくなる
例えばこんな感じ
allScore[0] | [0][0] | [0][1] | [0][2] |
---|---|---|---|
80 | 100 | 90 | |
allScore[1] | [1][0] | [1][1] | [1][2] |
85 | 95 | 75 |
みたいなこと。
[]
を増やせば増やした分の多次元配列ができる。
ちなみに多次元配列の初期化するときは
int[][] allScore = {{80, 100, 90},{85, 95, 75}};
◆多次元配列Sample
class MultiArray{
public static void main(String[] args){
int[][] allScore = new int [2][3];
allScore[0][0] = 80;
allScore[0][1] = 100;
allScore[0][2] = 90;
allScore[1][0] = 85;
allScore[1][1] = 95;
allScore[1][2] = 75;
//多次元配列の初期化
//int[][] allScore = {{80, 100, 90},{85, 95, 75}};
System.out.println(allScore[0][0] + "点");
System.out.println(allScore[0][1] + "点");
System.out.println(allScore[0][2] + "点");
System.out.println(allScore[1][0] + "点");
System.out.println(allScore[1][1] + "点");
System.out.println(allScore[1][2] + "点");
System.out.println("allScore.length:" + allScore.length);
System.out.println("allScore[0].length:" + allScore[0].length);
}
}
C:\Java\1>javac MultiArray.java
C:\Java\1>java MultiArray
80点
100点
80点
85点
95点
75点
allScore.length:2
allScore[0].length:3
おまけ
allScore.lengthとallScore.length[0]はそれぞれの要素はというと
allScore.lengthの指し示しているのは行のallScoreだから2
allScore[0].lengthの指示しているのは列のallScore[]だから3
だんだん長くなってきた。
理解は深まってきたかな。