😺

Java7日目

2023/08/08に公開

配列の続き

ガベージコレクション

public class Main {
  public static void main(String[] args) {
    boolean judge = true;
    if (judge == true) {
      int[] array = {1, 2, 3};
    }
  }
}

上記コードでは5行目で配列変数arrayが宣言され3つの要素を持つ配列が生成される。
しかしブロック内で宣言された変数のスコープはそのブロック内である。そのため6行目の時点で配列変数arrayはメモリから消滅する。しかし、newで確保された3つの要素は普通の変数ではないため、ブロックが終了しても寿命は迎えない。その結果どの配列変数からも参照されない状態でメモリに残ってしまう。そして事実上メモリ内のゴミ(garbage)となる。このゴミがたまり続けるとメモリを圧迫してしまう可能性がある。

Javaではガベージコレクション(GC: garbage collection)という仕組みが常に働いており、どの変数からも参照されなくなったメモリ領域を自動的に探して片づけてくれている。

null

配列変数にnullを代入することで意図的に配列を参照されないようにすることができる。
「参照を切る」ともいう。

nullとは?
  • int[]型などの参照型変数に代入すると、その変数は何も参照しなくなる
  • int 型などの基本形変数に代入することができない

多次元配列

2次元配列の宣言
要素の型[] [] 配列変数名 = new 要素の型[行数] [列数];
2次元配列の要素の利用
配列変数名[行の添え字] [列の添え字]
という書き方をします。

以下は親配列と子配列の要素数を表示するコードです。

public class Main {
  public static void main(String[] args) {
   int[] [] scores = {{40, 50, 60}, {80, 60, 70}};
   System.out.println(scores.length);
   System.out.println(scores[0].length);
  }
}
//=> 2
//   3

短いですが、配列のまとめは終わります。明日からはメソッドについて書いていきます。

Discussion