0
0

昔、バスケの練習で何パターンかオフェンスの練習していて、何故この動きが必要かあまり理解せずやっていたら試合で防がれ、何故防がれたかしっかり理解できず、攻め倦んで監督から怒りの〇〇を喰らった記憶がある。

実務のテストでは、配列を良く使いました。
例の如く何となくでやっていました。
問題なく動いていましたが、理解は浅く、何がどうとかいう説明は、、、

できません。。。

結構惨めな思いをしたのも前進する為の糧。

お品書き

  • 配列って?
  • 配列の生成
  • 配列の初期化
  • 多次元配列

配列って?

同じデータ型の変数を複数まとめて管理するもの
配列の生成には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

java
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番目から始まる。

java
		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で配列の要素数を取得できる。

cmd
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

java
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);
	}
}
cmd
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


だんだん長くなってきた。
理解は深まってきたかな。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0