Я побежал через класс, который был создан как это:Статические переменные и методы
public class MyClass {
private static boolean started = false;
private MyClass(){
}
public static void doSomething(){
if(started){
return;
}
started = true;
//code below that is only supposed to run
//run if not started
}
}
Мое понимание со статическими методами является то, что вы не должны использовать переменные класса в них, если они не являются постоянными, а не изменить , Вместо этого вы должны использовать параметры. Мой вопрос: почему это не нарушается, когда вызывается несколько раз, выполняя MyClass.doSomething(). Мне кажется, что это не должно работать, но делает. Он будет проходить только после выполнения инструкции if.
Так может кто-нибудь объяснить мне, почему это не сломается?
Итак, вы говорите, что у вас есть только одна копия этого класса, которая будет инициализирована и использована в течение всего времени работы приложения? Меня беспокоило то, что я не был уверен, что каждый раз будет использоваться один и тот же экземпляр, и что значение переменной не будет последовательным. –
+1 для правильного ответа.Кроме того, здесь можно получить дополнительную информацию о статических переменных в целом. Наверное, хорошо для вас читать, bigbrother82: http://en.wikipedia.org/wiki/Static_variable – Welbog
@ bigbrother82: Есть несколько экземпляров класса, но только одна копия начатой переменной, разделяемой между ними. – Welbog