Статическая переменная возвращает не то, что ожидается в Java

#java #static

#java #статическая

Вопрос:

У меня есть класс, который содержит статическую переменную, но возвращает не то, что я ожидал.

 public class helper {
    public static int a = 5;
}
  

Этот класс достигает статической переменной и изменяет ее.

 public class alistirma {
    public static void main(String args[]){
        System.out.println(helper.a);
        helper.a  = 3;
        System.out.println(helper.a);
    }   
}
  

Однако я ожидал, что этот код вернет 8, но он возвращает 5.

 public class dummy {
    public static void main(String[] args) {
        System.out.println(helper.a);
    }
}
  

Комментарии:

1. Что main вы используете?

2. Значение не будет сохраняться при выполнении одной и той же программы. Я думаю, что это ваше недопонимание.

3. Если разные программы ссылаются на одну и ту же статическую переменную, это не означает, что они волшебным образом совместно используют переменную, каждая программа выделяет свою собственную статическую переменную.

Ответ №1:

Каждый раз, когда вы запускаете программу, все начинается с нуля. Если вы не вызовете основной метод в alistirma перед основным методом в dummy, вы просто получите начальное значение для helper.a.

Ответ №2:

У вас есть две общедоступные функции static void Main(String args[]){}, поэтому удалите одну из них. Возможно, измените свой класс alistirma на это:

 public class alistirma {
public static void changeValue{
    System.out.println(helper.a);
    helper.a  = 3;
    System.out.println(helper.a);
}   
  

}

И затем заставьте ваш фиктивный класс вызвать метод ChangeValue от alistrima .

 public class dummy {
public static void main(String[] args) {
    alistirma.changeValue();
    //System.out.println(helper.a); don't need this now
}
  

}