#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
}
}