Я пишу приложение для Android на Java (с Codename One).Я занимаюсь Java около 3 лет (Swing, FX, после года Python), но не профессиональный программист.Итак, для профессионалов, будьте любезны со мной.
Вот моя проблема: Я заметил, что проект может работать совершенно по-разному, в зависимости от того, инициируется ли переменная внутри дляили в начале класса.
Вот некоторый код:
В *1000* первом сценарии создается экземпляр кнопки внутри цикла for, либо вызывая кнопку, либо добавляя ее через список.При запуске проекта результаты идентичны:
for (int i = 0; i < list.size(); i++) {
Button button = new Button("test"); // OR
Button button = new Button(list.get(i));
form.add(button);
};
Во втором сценарии кнопка создается вне цикла for.В этом случае результат отличается, когда я использую ArrayList или кнопку.
public class Test {
private Button button;
public void animation() {
for (int i = 0; i < list.size(); i++) {
button = new Button("test"); // OR
button = new Button(list.get(i));
form.add(button);
}
}
}
В проекте также есть таймер, и когда я добавляю кнопку со вторым подходом, компоненты отображаются несогласованным образом, чего не происходит при использовании первого подхода.
Я решил часть программирования, но, независимо от непосредственных последствий для проекта, почему в Java может иметь значение, в какой момент, внутри или вне цикла for, вы создали экземпляр переменной?И почему это важно, если я использую ArrayList или нет?
Для меня это не имеет смысла.Это неожиданное поведение Java или что-то происходит под капотом, о котором я не знаю?
Кто-нибудь может объяснить?