English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
静的ファイル/変数はそのクラスに属しており、メモリに一緒に読み込まれます。オブジェクトを作成せずに呼び出すことができます。(クラス名を参照してください)。そのクラス全体で静的字段のコピーが一つしかありません、つまり、静的字段の値はすべてのオブジェクトで同じです。staticキーワードを使用して静的字段を定義できます。
public class Sample{ static int num = 50; public void demo(){ System.out.println("demoメソッド内のnumの値"+ Sample.num); } public static void main(String args[]){ System.out.println("mainメソッド内のnumの値"+ Sample.num); new Sample().demo(); } }
出力結果
mainメソッド内のnumの値 50 demoメソッド内のnumの値 50
メソッド内に持つ変数は局所変数であり、その範囲はメソッド内にあり、メソッドの実行後に破棄されます。つまり、現在のメソッドの外でクラスと/静的変数の定義と局所変数が矛盾しています。したがって、メソッド内で静的変数を宣言することは意味がありません。そのようにして試みると、コンパイル時エラーが発生します。
以下のJavaプログラムでは、メソッド内で静的変数を宣言しようとしました。
import java.io.IOException; import java.util.Scanner; public class Sample { static int num; public void sampleMethod(Scanner sc){ static int num = 50; } public static void main(String args[]) throws IOException { static int num = 50; } }
上記のプログラムを実行しようとすると、以下のエラーが発生します-
Sample.java:6: error: expressionの開始が不正です static int num = 50; ^ Sample.java:9: error: expressionの開始が不正です static int num = 50; ^ 2 エラーメッセージ