Java基礎②
クラス
- クラスにはフィールドとメソッドがある。
- フィールドとメソッドはクラスのメンバである。
- クラスはオブジェクト(インスタンス)を作って使う。(new演算子で作る。)
- クラス型の変数は参照型の変数。
- クラスファイルは1クラス1つ作られる。
メソッド
- 呼び出し側が渡す値は実引数(argument)。
- メソッドに渡される値は仮引数(parameter)。
- 戻り値のないメソッドはvoidをつける。(voidは型を持たないという意味。)
- 2つ以上の戻り値はもてない。
- ローカル変数はメソッド内で宣言した変数。(仮引数も)
オーバーロード
コンストラクタ
- デフォルトコンストラクタは書かなくても裏で用意される。
- privateをつけると呼び出せない。
- 引数有りのコンストラクタを作れる。(コンストラクタのオーバーロード)
- 引数有りのコンストラクタを書く場合、デフォルトコンストラクタを書かなくてはならない。
- コンストラクタ内にて、this()で別のコンストラクタを呼べる。
- this()はコンストラクタの先頭におく。
クラス変数とクラスメソッド
- staticをつける。
- クラス変数はクラス全体で扱うデータを格納。
- クラスメソッドはインスタンスが作成されていなくても呼べる。
- クラスメソッド内ではthis.は使えない。
- main()メソッドはクラスメソッド。(staticがついている。)
- メンバはクラス内ではthis.で呼べる。
- 同じクラス内のメソッドをmainメソッドの中で呼ぶ場合、呼ぶメソッドをstaticにするか、インスタンスを作って使う。
インスタンス
- インスタンス変数は、インスタンスで使えるフィールド。
- インスタンスメソッドは、インスタンスで使えるメソッド。
- インスタンスが作られる際、コンストラクタが呼ばれる。
- インスタンスが破棄される際、finalize()が呼ばれる。
修飾子
- privateメンバにはクラスの外から利用できない。(カプセル化に使う)
- publicメンバはクラスの外から利用できる。
- 修飾子をつけないと同じパッケージ内なら利用できる。
ラッパークラス
Integer a = new Integer(100); Integer b = new Integer(100); System.out.println(a == b); // false ※参照先が同じかチェック System.out.println(a.equals(b)); // true ※値が同じかチェック
クラス型の変数
- クラス型の変数に同じクラス型の変数を代入できる。
- 代入すると同じオブジェクトをさすようになる。
- nullを代入するとオブジェクトをさし示さなくなる。(ガベージコレクション)
- 2つの変数が同じオブジェクトをさしていたとき、一方にnullを入れてももう一方のオブジェクトはそのまま。
ガベージコレクション
- オブジェクト変数にnullを代入するとオブジェクトをさし示さなくなる。
- オブジェクトが破棄される際、finalize()が呼ばれる。
- ガベージコレクションが行われるタイミングはJavaに任されている。
値渡しと参照渡し
- オブジェクトは参照渡し、呼び出し元と呼び出し先で同じものをさす。
- 基本型は値渡し、呼び出し元と呼び出し先で違うもの。コピー。
オブジェクトを配列で扱う
Man[] men; // 配列変数を準備 men = new Man[2]; men[0] = new Man(); men[1] = new Man(); men[2] = new Man();