¿Por qué no cambia el valor de la expresión booleana? (Java)

El siguiente es el código sobre el que estoy preguntando:

int price = 0;
boolean isFree = (price == 0);

if (isFree) {
     price = 10;
     if (isFree)
         System.out.println("one");
     else
         System.out.println("two");
}

Entonces, solo quiero saber por qué la isFreevariable sigue siendo verdadera mientras la variable de precio cambia a 10. En otras palabras, ¿por qué la variable de precio cambia a 10 sin afectar la expresión booleana?

Respuesta 1

Después de inicializado por boolean isFree = (price == 0);, isFreese determina que la variable es true.

no se cambiará aunque pricese cambie, a menos que lo cambie explícitamente (como boolean isFree = (price == 0);volver a llamar ).

Respuesta: 2

Debido a que la variable isFree tenía su valor establecido una vez cuando la definió. Si desea que la variable isFree tenga otro valor, debe configurarla.

Puede cambiar su definición de isFree por un método:

private boolean isFree(int price) {
    return price == 0;
}

Luego, cada vez que desee saber si el precio es gratuito, puede llamar al isFreemétodo:

int price = 0;

if (isFree(price)) {

    price = 10;

    if (isFree(price))
        System.out.println("one");
    else
        System.out.println("two");
}
Respuesta: 3

Permanece igual porque no verifica la variable booleana nuevamente después de compararla la primera vez. Si tuvieras otro

isFree = (price == 0);

después de verificar y reasignar el precio a 10, entonces sería falso.

Respuesta: 4

Quiero reproducir la URL en mi aplicación, pero cuando uso la biblioteca de exoplayer, se produce un error, mientras que si uso el reproductor multimedia estándar, todo estará bien y se reproducirá el mp3. Por favor ...

Quiero calcular el número total de bits en un objeto BitSet. La longitud del método devuelve el "tamaño lógico" del BitSet: el índice del bit más alto establecido en el BitSet plus one, mientras que el método ...

Estoy luchando con este problema. Quiero hacer que una imagen en un panel desaparezca presionando un botón y configurando una bandera en el botón de escucha para hacer esto. La variable booleana clave es showImage que ...

Estoy usando una consulta seleccionando lastlevel como VERSION, nombre como DESCRIPTION, TO_DATE (lastdate, 'DDMONYYYY_HH24: MI: SS') como RELEASEDATE de mytable donde rownum <= 10 aquí la columna lastdate es ...