はじめに
java初心者が議事録的に書いています。
今回はstaticの代表的な使い方2パターンを描いていこうと思います。
staticメソッド
java初心者の人はおまじないのようにstaticを使っていませんか?
特に以下のようなときに何となくかいていませんか?(私もそうでした)
public class Driver {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
}
}
ではこのstaticはどういう意味があるのでしょか。
結論から言うと、staticがついているメソッドは「インスタンス化しなくても呼び出せる」という特徴があります。
ふつうはメソッドを呼び出すときはnewを使ってインスタンス化した後に呼び出しています。しかしmainメソッドのように一番最初に呼び出すメソッドはインスタンス化できません。
そこでstaticをつけることでインスタンス化しなくても呼び出せるようにしているのです。
static変数
staticはメソッドだけでなく変数にもつけることができます。
書き方としては以下の通り。
class Sample{
public static int num = 1;
}
ではインスタンス変数を用いることでなにがうれしいのでしょうか。
static変数を用いることでそのクラスから生成されたすべてのインスタンスで共有される値になります。
例えば以下のようなクラスがあるとします。
これを実行すると、、
public class Store {
public static int num = 1;
}
public class Driver {
public static void main(String[] args) {
Store st = new Store();
Store at = new Store();
st.num = 2;
System.out.println(at.num);
}
}
2
となります。
ここからわかる通り、直接的にat.numに触れていないにも関わらずat.numの値が変わっていることがわかります。(ちなみにstaticを外して実行すると実行結果は「1」になります)
以上がstaticの代表的な使い方です。
おまじないを少しでも減らしていきましょう!