2013-07-29 2 views
-1
 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, разрешен только окончательный»почему static final int MAX_VALUE = 100; дает ошибку времени компиляции

+2

переменные 'static' не могут быть внутри метода. Удалите модификатор 'static'! – NINCOMPOOP

+1

В java я думаю, что статические переменные не могут быть в методе, таком как C/C++ –

+0

+1 для напоминания OP об этом – NINCOMPOOP

ответ

4

Вы не можете объявлять статические переменные внутри методов. Статические переменные относятся к классу; переменные, объявленные внутри метода, являются локальными переменными и относятся к этому методу.

0

Вы не можете delcare static вещи внутри метода. Переместите его вверх по линии.

1

Локальная переменная не может быть статической. Вы можете создать окончательную локальную переменную, или конечную переменную статического класса (которые на самом деле постоянные, кстати.), Но не статическую локальную переменную:

public class A{ 
    static final int CLASS_CONST = 42; 

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

     ... 
    } 
} 
+0

+1 Для его собственно кодирования! – NINCOMPOOP

1

Статические переменные принадлежат к методам class.Not

Переменные, указанные внутри method, являются local variables и принадлежат к этому method.

Таким образом, становится

final int MAX_VALUE = 100; 

Предпочитаю читать: Docs on Understanding Instance and Class Members

0

Вы не можете создать статический финал в методе, вы должны создать его за пределами метода:

public class A { 
      static final int MAX_VALUE = 100; 

      public static void main(String[] args){ 
      System.out.println("MAX_VALUE"); 
      } 
     } 
0

вам должен объявить эту константу в классе А, а не в методе main()

public class A{ 

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

    public static void main(String[] args){ 
     System.out.println("MAX_VALUE"); 
    } 
} 
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); 
    } 
} 
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"); 
     } 
    } 
0

статические переменные являются переменными уровня класса, вы не можете объявить их в методе.
По Docs

 
Sometimes, you want to have variables that are common to all objects. 
This is accomplished with the static modifier. Fields that have the static 
modifier in their declaration are called static fields or class variables. 
They are associated with the class, rather than with any object 
0

Другие уже указывали на то, что статические члены принадлежат к классу вместо конкретного экземпляра. Поэтому вам не нужно создавать экземпляр класса для использования статического члена, но вы можете напрямую вызвать SomeClass.SOME_STATIC_MEMBER.

Вы не можете вызвать любого другого члена класса, который не является статическим, не создавая экземпляр этого класса.Значение, если вы have-

public class SomeClass { 

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

} 

Для того, чтобы использовать добавить метод из SomeClass выше, вы должны создать экземпляр первого

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

Таким образом, нет никакого смысла, чтобы позволить нам объявить статические члены в нестационарном методе, как и для использования этого метода, мы должны установить класс, к которому принадлежит этот метод.

Смежные вопросы