¿Por qué el objeto del botón se comporta de manera diferente según dónde se declare?

Estoy escribiendo una aplicación de Android en Java (con Codename One). Estoy en Java durante unos 3 años (Swing, FX, después de un año de Python), pero no soy un programador profesional. Entonces, para los profesionales, tengan paciencia conmigo.

Aquí está mi problema: he notado que un proyecto puede ejecutarse de manera bastante diferente, dependiendo de si una var se inicia dentro de un ciclo for o al comienzo de una clase.

Aquí hay un código:

En el primer escenario , se crea una instancia de un botón dentro del ciclo for, ya sea llamando al botón o agregándolo a través de una lista. Al ejecutar el proyecto, los resultados son idénticos:

for (int i = 0; i < list.size(); i++) {

        Button button = new Button("test"); // OR
        Button button = new Button(list.get(i));
        form.add(button);
 };

En el segundo escenario , el botón se instancia fuera del ciclo for. En este escenario, el resultado es diferente cuando uso una ArrayList o un botón.

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);
        }
    }
}

También hay un temporizador en el proyecto, y cuando agrego un botón con el segundo enfoque, los componentes aparecen de manera descoordinada, lo que no ocurre cuando uso el enfoque de puño.

He resuelto la parte de programación, pero, independientemente de las consecuencias inmediatas en el proyecto, ¿por qué en Java puede importar en qué punto, dentro o fuera de un bucle for, instanciaste una variable? ¿Y por qué importa si uso una ArrayList o no?

Para mí no tiene sentido. ¿Es este comportamiento inesperado de Java, o hay algo sucediendo bajo el capó, que no sé?

Alguien puede explicar?

Respuesta 1

¿Es posible obtener el espacio en disco utilizado por un conjunto de resultados dado? ¿Diga si quisiera seleccionar de una tabla donde la identificación del usuario = X, para calcular el uso del disco de la base de datos para un usuario? Idealmente me gustaría ...

Tengo dificultades para obtener el siguiente código para preservar la fila seleccionada lógicamente en el modelo si JTable se ha ordenado. Funciona según lo previsto cuando no se aplica la clasificación. vacío privado ...

Cuando uso JUnitParams, puedo pasar una matriz de objetos donde cada elemento se usará para ejecutar una prueba. ¿Hay alguna forma de agregar un nombre o identificación a cada uno de estos? Entonces, cuando ejecuto estas pruebas JUnit, ...

Estoy construyendo un proyecto multiproceso en Java, tengo entidades y paquetes DAO para envolver las tablas de la base de datos y manipularlas. Tengo un paquete de procesamiento que contiene Runnables. La forma en que tengo ...