🙄
【Java Silver勉強】staticから逃げない
【前置き】
メモ程度に簡単に書いて置くための物になっていますので、正確な情報をお求めの方は、
別のサイトをお勧めいたします。
staticとは
インスタンス化なしで、変数の値を保持することが可能になる修飾子です。
プロジェクト共通で同じ値を使用することが可能です。
仕組み
static int num = 10
Sample sample = new Sample();
- ソースコードを書く
- ソースコードをコンパイル
- コンパイルされたファイルはクラスファイルになり、static変数・関数は「staticメモリ」に場所を格納される
- 通常の変数・関数はインスタンスメモリに格納される。
呼び出し条件
from \ to | static関数 | static変数 | 関数 | 変数 |
---|---|---|---|---|
static関数 | - | 〇 | × | × |
static変数 | 〇 | - | × | × |
関数 | 〇 | 〇 | - | 〇 |
変数 | 〇 | 〇 | 〇 | - |
記述例
public class Val(){
private static int num = 10;
public static int getNum(){
return num;
}
}
public class Sample(){
public static void main(String[] args){
int num = Val.getNum();
System.out.println(num);
}
}
まとめ
staticはインスタンス化しない為、メモリを節約したりできるけど、static関数から通常の関数にアクセスすることができないから、ちょっと不便な場所がある。
Discussion