2013-07-04 1 views
7
private static int Fibonoci(int n) { 
static int first=0; 
static int second=1; 
static int sum; 
if(n>0) 

я получаю сообщение об ошибке «Illegal Модификатор» и если я удалить статическое ключевое слово не существует никакой ошибки, и мне нужно эти переменные являются статическимиМогу ли я объявить статическую переменную внутри статической функции-члена в Java?

+0

заверните их в класс. – BigMike

+4

'Мне нужно, чтобы эти переменные были статическими, а затем объявляли их как статические поля в вашем классе. – Pshemo

+0

зачем вам статичным? –

ответ

12

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

static int first=0; 
static int second=1; 
static int sum; 
private static int Fibonoci(int n) { 
    //do somthing 
} 

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

http://crunchify.com/write-java-program-to-print-fibonacci-series-upto-n-number/

http://electrofriends.com/source-codes/software-programs/java/basic-programs/java-program-find-fibonacci-series-number/

+1

только переменные класса (поля) и методы могут быть статическими. – vikingsteve

0

Эта переменная называется локальными переменными, они находятся внутри метода scop или constructor, они не могут быть переменными экземпляра или класса.

private static int COUNT;// Class Variable 
private static int Fibonoci(int n) { 
int a =3 ; // local variable 
} 

Мне нужны эти переменные являются статическими, Окей, почему вам это нужно? потому что статические переменные, используемые для специального purpuse, однако, вы можете создавать статические поля, как я делал выше кода.

0

Local variables не может быть объявлен статическим. Другими словами, Static не относится к local variables.

И я не видел никакого использования declaring их static.

Follow JLs on static fields

Статическое поле, иногда называемое переменной класса, воплощается, когда класс инициализируется (§12.4).

1

Вы не можете объявить статическую переменную внутри метода, static означает, что это переменная/метод класса, он принадлежит всему классу, но не один из его отдельных объектов. Это означает, что ключевое слово static может использоваться только в «классе», то есть оно не имеет смысла внутри методов.

Я не знаю, чего вы пытаетесь достичь, но если вы действительно хотите, чтобы эти переменные были статическими, вы можете объявить их как статические поля в своем классе.

0

Вы должны определить статические переменные как члены класса. Переменные, определенные в методе, являются локальными переменными, и их жизненные циклы заканчиваются в конце метода. локальные переменные являются специфичными для вызовов, переменные-члены являются объектно-ориентированными, а статические переменные являются переменными класса.

0

Вы должны объявить статические переменные вне функции:

static int first=0; 
static int second=1; 
static int sum; 
private static int Fibonoci(int n) { 
    if(n>0) 
0

Вы не можете объявить varibale как статические внутри метода.В других словах мы можем сказать, что Локальные переменные не могут быть объявлены статическими.

1

первопричину: Статические переменные выделяются в память класса времени загрузки, потому что они являются частью класса, а не его объект.

Теперь, если статическая переменная находится внутри метода, то эта переменная попадает под область действия метода, и JVM не сможет выделить ей память.

+1

Но это именно то, что статические локальные переменные используются в таких языках, как C или C++: использовать статическую память вместо стека, но ограничивать их область видимости внутри функции. Статическая переменная в области видимости класса - это другое дело, потому что она видна для всех других методов. – SasQ

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

  • Нет связанных вопросов^_^