*の方向性はどうでもいい

プログラミングなどの学習履歴として最初は書いてたけどもう何でもいいやと思って今に至る

Javaのstatic

自分はプログラミングはJavaから始めた。

始めたというより会社の方針でOCJP-Silverを取得することを義務付けていたので、

必然的にJavaから始まりました。

 

正直全く分かりませんでした。

後ほど身をもって知りましたが、プログラミングを始めるならまずはC言語から

始めるべきだなと思いました。

それはさておきプログラミングやPCのことを全く分からなかった自分がまずプログラミングとは何ぞやから始めずにいきなりJavaから始まったのはしんどかったです。

特に???となったのがstaticでした。(今は少しずつ分かってきました)

これは本当に分かりませんでした。静的?性的? どっちでもええわ!と独りで発狂していました。

 

ただ最近仕事でJavaを使う機会が出てきたおかげで少しずつ分かってきました。

まずstaticを訳すと静的とでますが、要するに処理することが完全に決まっていて変化することがないということです。

まずは静的の意味を押さえていきます。

 

次にstatic修飾子の特徴ですが以下のようなコードがあったとします。

class User {
    private String name;
    private static int count = 0; 

    public User(String name) {
        this.name = name;
        User.count++;
    }

    public static void getInfo() { 
        System.out.println(User.count);
    }

}

public class MyApp {

    public static void main(String[] args) {
        User.getInfo(); // 0
        User tom = new User("tom");
        User.getInfo(); // 1
        User bob = new User("bob");
        User.getInfo(); // 2
    }

}

 

UserクラスにあるgetInfo()メソッドを呼び出すには通常、User 変数 = new User();

という風に記述しますがstatic修飾子を付けた場合はインスタンス化する必要がなくなります。

あとstatic同士では値を保持しあう関係になります。

例えばfor文を使うとダメな状況下で1、2、3、4....と番号を増やしていくときに

static変数で値を保持しつつ番号を増やしていくという方法が私の時は有効でした。

 

staticを使いこなすとなると、もっと練習が必要だと感じました。