es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Instancia JAVA vs variable local

import comp102x.IO;

public class testing {

    private int x;

    public testing(int x) {

            x = x;
    }

    public static void main(String[] args) {

            testing q1 = new testing(10);
            IO.outputln(q1.x);
    }
}

¿Por qué la salida es 0 en lugar de 10? Este es un script JAVA. El concepto de variables de instancia y variables locales es muy confuso para mí, ¿alguien puede ayudar a explicar?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La salida es 0 en lugar de 10 porque en el constructor de la clase testing, el parámetro x se asigna a sí mismo en lugar de la variable de clase también llamada x. Esto significa que la variable de instancia x nunca recibe un valor y permanece en su valor predeterminado de 0.

    El concepto de variables de instancia y variables locales puede ser confuso, pero básicamente las variables de instancia se declaran a nivel de clase y pueden ser accesibles y modificables por cualquier método de la misma clase. Las variables locales se declaran dentro de métodos y solo pueden ser accesibles y modificables dentro de ese método. Cuando una variable local tiene el mismo nombre que una variable de instancia, la variable local tiene prioridad dentro del método, y para modificar la variable de instancia, es necesario utilizar la palabra clave this.

    En este caso, el parámetro de constructor x tiene el mismo nombre que la variable de instancia x, por lo que para asignar el valor a la variable de instancia, el código debería modificarse de la siguiente manera:

    public testing(int x) {
        this.x = x;
    }
    

    De esta manera, el valor de x pasado al constructor se asignará a la variable de instancia x, lo que resultará en una salida de 10 en lugar de 0.

Comments are closed.