2016-01-30 2 views
-5

Используя пустую активность студии Android (или активность Blank), если я объявляю int, тогда вы хотите инициализировать ее на следующей строке, это не позволит мне. например:Студия Android: Почему я не могу ссылаться на переменную, которую я объявил?

public class MainActivity extends AppCompatActivity { 

    int n; 
    n=1; // generates a lint here and says unknown class 'n' 

} 

Он устанавливает линт под n = 1; и говорит мне «неизвестный класс: 'n'"

... но если я создаю метод, я могу инициализировать его в методе. например:

public class MainActivity extends AppCompatActivity { 

    int n; 

    public void test() { 
      n=1; 
    } 

} 

Это также позволит мне объявить Int ТОГДА отформатируйте ее на следующей строке внутри метода. например:

public class MainActivity extends AppCompatActivity { 

    public void test() { 
      int n; 
      n=1; 
    } 

} 

Может кто-нибудь объяснить, почему я не могу ссылаться на переменную, которую я установил внутри класса MainActivity? Спасибо.

+0

Почему вы не инициализируетесь в одной строке – drWisdom

+0

Вы не можете инициализировать переменную непосредственно внутри класса (если это не та же строка) или даже методы вызова. Вам нужен метод или конструктор. –

+0

drwisdom, я просто хотел знать, почему это можно сделать в методе, но не в классе. – JohnJ73

ответ

1

Это просто способ Java инициализация переменной работает - вы можете инициализировать переменную в начале вашего класса:

public class MainActivity extends AppCompatActivity { 
    int n = 1; 
    ..... 
    other methods 
} 

или внутри метода или конструктора:

public class MainActivity extends AppCompatActivity { 

    int n; 

    public void test() { 
      n=1; 
      int a; 
      a = 8; 
    } 
} 

это не имеет ничего общего с Android, просто Java.

Вы можете прочитать об этом механизме here например.

+0

Спасибо. Это похоже на процедурный метод, но не класс. – JohnJ73

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