0
        public class A{
          public static void main(String[] args){
           static final int MAX_VALUE = 100; //COMPILE TIME ERROR
           System.out.println("MAX_VALUE");
          }
        }

なぜstatic final int MAX_VALUE=100; コンパイル時にエラーが発生し、「パラメーター MAX_VALUE の無効な修飾子; final のみが許可されている」というエラーが発生します。

4

10 に答える 10

5

メソッド内で static 変数を宣言することはできません。静的変数はクラスに属します。メソッド内で宣言された変数はローカル変数であり、そのメソッドに属します。

于 2013-07-29T10:56:27.823 に答える
1

メソッド内でキーワードstaticを使用することはできません。これは有効なコードです:

public class A{

   static final int MAX_VALUE = 100; // This line can't go in a method.

   public static void main(String[] args){
      System.out.println("MAX_VALUE: "+MAX_VALUE);
   }
}
于 2013-07-29T10:58:10.297 に答える
1

ローカル変数を静的にすることはできません。最終ローカル変数または最終静的クラス変数 (実際には定数です) を作成できますが、ローカル静的変数は作成できません。

public class A{
    static final int CLASS_CONST = 42;

    public static void main(String[] args){
       final int LOCAL_CONST = 43;

       ...
    }
 }
于 2013-07-29T10:56:55.573 に答える
1

static 変数は class.Not メソッドに属します

methoda内で宣言された変数はlocal variables、その に属しmethodます。

だからそれはなる

final int MAX_VALUE = 100;

読むことを好む: インスタンスとクラスメンバーの理解に関するドキュメント

于 2013-07-29T10:56:57.003 に答える
0

メソッド内で static final を作成することはできません。メソッドの外で作成する必要があります。

public class A {
          static final int MAX_VALUE = 100;

          public static void main(String[] args){
             System.out.println("MAX_VALUE");
          }
        }
于 2013-07-29T10:57:13.137 に答える
0

main()メソッド ではなく、クラス A でこの定数を宣言する必要があります。

public class A{

    static final int MAX_VALUE = 100; //COMPILE TIME ERROR

    public static void main(String[] args){
        System.out.println("MAX_VALUE");
    }
}
于 2013-07-29T10:58:10.080 に答える
0

変化する

public class A{
      public static void main(String[] args){
       static final int MAX_VALUE = 100; //COMPILE TIME ERROR
       System.out.println("MAX_VALUE");
      }
    }

public class A{
      static final int MAX_VALUE = 100; //NO ERROR YAY!!

      public static void main(String[] args){
       System.out.println("MAX_VALUE");
      }
    }
于 2013-07-29T10:58:32.140 に答える
0

他の人は、静的メンバーが特定のインスタンスではなくクラスに属していることをすでに指摘しています。したがって、静的メンバーを使用するためにクラス インスタンスを作成する必要はなく、SomeClass.SOME_STATIC_MEMBER を直接呼び出すことができます。

クラスをインスタンス化せずに、静的でないクラスの他のメンバーを呼び出すことはできません。あなたが持っている場合の意味-

public class SomeClass {

    public int add (int x, int y){
        return x + y;
    }

}

上記の SomeClass のaddメソッドを使用するには、最初にインスタンス化する必要があります-

SomeClass someClass = new SomeClass();
int sum = someClass.add(5, 10);

したがって、非静的メソッドで静的メンバーを宣言できるようにする意味はありません。そのメソッドを使用するには、そのメソッドが属するクラスをインスタンス化する必要があります。

于 2013-07-29T11:19:45.880 に答える
0

メソッド内でdecare することはできませんstatic。1 行上に移動します。

于 2013-07-29T10:56:48.327 に答える
0

静的変数はクラス レベルの変数であり、メソッドで宣言することはできません。
よる文書

場合によっては、すべてのオブジェクトに共通の変数が必要になることがあります。  
これは static 修飾子で実現されます。static を持つフィールド
宣言内の修飾子は、静的フィールドまたはクラス変数と呼ばれます。
それらはオブジェクトではなく、クラスに関連付けられています
于 2013-07-29T11:04:24.503 に答える