こんにちは、現役SEの「とも」です。
今回は、「参照型」の変数について書きたいと思います。
参照型はクラスや配列などといった、「データのかたまり」という概念をもつものが全て該当します。
「プリミティブ型」以外は「参照型」といっていいかもしれませんね。
クラスと配列については別途詳しく書きますが、簡単な概要としては以下の通りです。
【クラスの特徴】
- 任意のフィールド(変数)を任意の数だけ定義できる
- フィールドにはプリミティブ型だけでなく、クラスや配列も定義できる
- クラスにメソッドを持っている
基本的なクラスの記述は以下のようになります。
class TestCls{
int a = 100; // フィールド(変数)
public void print1(){ // クラスメソッド
System.out.println(a);
}
}
クラスを利用する際の変数の定義は以下のようになります。
TestCls a = new TestCls();
【配列の特徴】
- 同じ型のデータ型の配列を定義することが可能
- プリミティブ型、参照型のどちらでも配列にすることは可能
配列の変数の定義は以下のようになります。
int a[] = new int[3]; // 要素数3のint型配列
クラスは、Javaが提供するライブラリが膨大な数あります。
また、自分で「実現したい挙動に合わせて」任意の変数を定義し、クラスを作成することもできますので、かなり汎用性の高い仕組みになっています。
配列については類似データや関連データの格納や繰り返し処理を行う際に良く使われ、クラスの配列といった、配列とクラスを組み合わせて使われることも多いです。
- 参照型で注意すべきは、メモリの解放です。
前回の記事で、メモリの解放のお話はしていますので、今回はメモリの解放の方法を復習します。
メモリの解放については、以下のように使用が終わった変数にnullを設定します。
これによって「a」の変数が参照している領域は解放されます。
TestCls a = new TestCls();
//何らかの処理
a = null; //TestClsで確保されたメモリは解放される
ここでは、
- 参照型はクラスと配列がある
- 配列は、色々なデータ型で定義することができる
- クラスは、色々なデータ型を組み合わせて定義することができる
- 参照型はメモリの解放を意識する必要がある
ということを覚えておけば問題ありません。