クラスの呼び出しに関する疑問点
int i = new java.util.Random().nextint(int b);
又は
Random a = Random();
int i = a.nextInt(int b);
で0~bの間で乱数を生成し、iに代入する。
これは、java.utilパッケージのRandomクラスをインスタンス化して、
nextIntメソッドを呼び出して使っているということ。
一方、
int i = java.lang.Math.min(int a, int b);
(java.langは予めimportされているため、通常は記述しない)
でaとbを比較し、小さいほうをiに代入する。
これは、java.langパッケージのMathクラスのminメソッドを呼び出して使っている。
Randomクラスを利用する場合はインスタンス化しているのに対して
Mathクラスのminメソッドを利用する場合はインスタンス化しなくてもいいのは
何故だろう。
追記
自己解決しました。
RandomクラスのnextIntメソッドは、静的(static)メソッドではないからみたいです。
静的メソッドとは
メソッドにstaticをつけることで定義される。
静的メソッドとすることで以下の三つの効果が現れる。
1.メソッドの実体がクラスに属するようになる
2.インスタンスにメソッドの分身が準備される
3・インスタンスを1つも生み出すことなく呼び出せる
今回の場合、関係するのは3つ目の効果。
APIリファレンスを参照すると
RandomクラスのnextIntメソッドはインスタンスメソッドとなっている。
つまり、静的メソッドではないためnewでインスタンスを生成してからでないと呼び出すことができない。
一方、Mathクラスのminメソッドはstaticメソッドであるから、インスタンスの生成無しでいきなり呼び出すことができる。
訂正、補足がありましたらご指摘ください。