English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Javaのメソッドでは静的変数を宣言できますか?

静的ファイル/変数はそのクラスに属しており、メモリに一緒に読み込まれます。オブジェクトを作成せずに呼び出すことができます。(クラス名を参照してください)。そのクラス全体で静的字段のコピーが一つしかありません、つまり、静的字段の値はすべてのオブジェクトで同じです。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 エラーメッセージ
おすすめ