やわらか博物館

壁がトランポリンでできてる

Java入門4 配列

Javaの勉強はじめました

用語

・配列(array)…同一種類の複数データを並び順で格納するデータ構造
・要素(element)…配列内の変数(?)。
・添字(index)…要素ナンバー。0から始まる

配列の書き方

(1)配列変数の宣言

要素の型[] 配列変数名 
int[] weight;

(2)要素の作成と代入

weight = new int[5];

あれこれ

配列の要素数の取得
配列変数名.length 
int ave = weight.length;
配列作成と初期化の省略記法
①要素の型[] 配列変数名 = new 要素の型[]{初期値1, 初期値2, 初期値3, …};
②要素の型[] 配列変数名 = {初期値1, 初期値2, 初期値3, …};
int[] weight1 = new int[]{40, 50, 60};
int[] weight2 = {40, 50, 60};
ArrayIndexOutOfBoundsException

→存在しない要素を使おうとしたエラー

配列をforループで回す

配列を回す…最初の要素から最後の要素まで代入されている値を順番に使用すること

for(int i = 0; i < 配列変数名.length; i++)
int weight = {45, 50, 55, 60, 65};
for(int i = 0; i <weight.length; i++)
拡張for文で配列を回す

拡張for文…要素を1つずつ取り出すループを簡単に書くための文

for(要素の型 任意の変数名:配列変数名)
int weight = {45, 50, 55, 60, 65};
for (int value : weight) {
 System.out.println(value);
}
配列の仕組みをマンションにたとえてみた
int[] mansion = new int[10]

1)配列を作成
→ぬまうおマンション建設
2)int型の要素を10個持つ配列がメモリ上に作成される
→1LDKの部屋を10個作成
3)mansionに配列の先頭要素のアドレスが代入される
→mansion=101号室 となる

・プログラムからmansion[n]と指定されたら
→ぬまうおマンションのn号室に配達
1)mansionの中に入っている番地(101号室)を取り出し、配列(先頭要素)を見つける
2)見つけた配列の先頭要素(101号室)からn個後ろの要素の区画を読み書き
→郵便配達ロボは直接n号室にいく知能がないのでn号室が101号室の何個後にあるのかという判断でもって郵便を配達する

GarbageCollection

Javaは賢いのでメモリ上のゴミを自動的に片付けてくれる

null

(1)int[]型などの参照型変数に代入すると変数は何も参照しなくなる
→配列はGC行き
(2)int型などの基本型変数には代入不可能

length,length()

length…配列の要素数取得
length()…文字列の長さ取得

多次元配列

2次元配列の宣言
要素の型[] 配列変数名 = new 要素の型[行数][列数]
2次元配列の要素の利用
配列変数名[行の添字][列の添字]
int[][] degree = new int[2][2];
scores[0][0] = 0;
scores[0][1] = 5;
scores[1][0] = 10;
scores[1][1] = 15;