2015-10-30 2 views
0

Как вы используете переменную вне любых методов без статического ключевого слова? Люди говорят, что этого не должно быть сделано, есть ли лучший способ?Java: использование «статического»

Вот код:

public class Main{ 

private static int a = 0; 
private static int b = 1;  //<--- How to use these without the 'static' type? 

public static void main(String[] args){ //Which will work here, 

    Okay(); 

} 

public static void Okay(){ //And here? 
    if(a <= b){ 
     System.out.println("Alright"); 
    }else{ 
     System.out.println("Okay Then"); 
    } 
} 

} 

ответ

3

Начните с удаления всех видов использования static (за public static void main исключением, что вам нужно, что один)

В public static void main, создать экземпляр Main и назвать это Okay метод ...

Main main = new Main(); 
main.Okay(); 

Например

public class Main { 

    private int a = 0; 
    private int b = 1; 

    public static void main(String[] args) { //Which will work here, 

     Main main = new Main(); 
     main.Okay(); 

    } 

    public Main() { 

    } 

    public void Okay() { //And here? 
     if (a <= b) { 
      System.out.println("Alright"); 
     } else { 
      System.out.println("Okay Then"); 
     } 
    } 

} 

Хотя это может показаться тривиальным, если у вас есть класс, который был модифицирующие значения в ряде различных способов, а затем с помощью классов экземпляров, как это будет сделать гораздо больше смысла, так как вы можете создать столько экземпляров, как вы хотели, и они будут поддерживать свои собственные версии самих ценностей, что позволяют манипулировать различные экземпляры по-разному, не оказывая влияния остальных

вы также можете посмотреть на Understanding Class Members для получения более подробной информации

вы могли бы как читать через Code Conventions for the Java TM Programming Language, это облегчит людям читать ваш код и читать дальше

0

По соглашению имена методов Java начинаются с строчной буквы. И вы можете передать переменные в методе

public static void okay(int a, int b) 

Или вы можете построить User Defined Type (пользовательский объект) и вызвать метод там. Нечто подобное,

class OkayClass { 
    int a; 
    int b; 
    // ... getters ... setters ... 
    public OkayClass(int a, int b) { 
     this.a = a; 
     this.b = b; 
    } 
    public void okay() { 
     // ... 
    } 
} 

А потом

OkayClass oc = new OkayClass(1, 2); 
oc.okay(); 
0

Наиболее распространенные случаи использования для создания static методов являются общими методами полезности. Вы увидите их по всей стандартной библиотеке java. См. Integer#parseInt(), String#valueOf(), почти все методы в java.util.Arrays и java.util.Collections. static переменная и методы связаны с классом вместо отдельных экземпляров этого класса. Поскольку static не может получить доступ к нестационарным переменным, они никогда не смогут изменить состояние экземпляра. Так, как упоминалось в Elliott, вы можете передать переменные методу.

Это, как говорится, много раз вам нужно разделить class' состояние между всеми экземплярами или позволить пользователям изменять это состояние. В этом случае действительны статические переменные со статическими методами. Например, вы можете не захотеть HashMap почтового индекса всех городов, поэтому отметьте его Mapstatic.

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