Normalmente, lo uso this
solo en constructores.
Entiendo que se usa para identificar la variable del parámetro (mediante el uso this.something
), si tiene el mismo nombre con una variable global.
Sin embargo, no sé cuál es el verdadero significado de this
Java y qué sucederá si lo uso this
sin punto ( .
).
Respuestas:
this
se refiere al objeto actual.Cada método no estático se ejecuta en el contexto de un objeto. Entonces, si tienes una clase como esta:
Entonces llamando
frobnicate()
ennew MyThisTest()
imprimiráAsí que efectivamente lo usas para múltiples cosas:
fuente
main
se requiere un método. Si agrego el método principal, entonces tengo que llamar desde allí. Y cualquier intento de llamar a frobnicate () dentro de main dice que no se puede llamar a una referencia no estática desde dentro de una estática. Y al eliminar la estática demain
devuelve el error nuevamente de que no se encuentra ningún método principal. Por favor explique.this.
funciona. Tengo entendido que lethis.
permite llamar a un método o variable que es único para la versión instanciada de la clase, lo que permite que exista otra versión del método o variable que se llama sin invocarthis.
En un simple llamadoTest.class
tengo dos métodos:public static void main()
ypublic Test()
yo no puede pasar información entre los métodos porquemain
es estático y los constructores no pueden hacerse estáticos. ¿Debo publicar como una nueva pregunta?static
básicamente significa que no necesita una instancia de la clase para llamarlo y que no tendrá acceso athis
él.Lo siguiente es copiar y pegar desde aquí , pero explica muy bien todos los diferentes usos de la
this
palabra clave:Definición: La
this
palabra clave Java se usa para referir la instancia actual del método en el que se usa.Las siguientes son las formas de usar esto:
Para denotar específicamente que se usa la variable de instancia en lugar de la variable estática o local. Es decir,
Aquí esto se refiere a la variable de instancia. Aquí la precedencia es alta para la variable local. Por lo tanto, la ausencia de
this
denota la variable local. Si la variable local que es el nombre del parámetro no es la misma que la variable de instancia, independientemente de sithis
se usa o no, indica la variable de instancia.This
se usa para referir a los constructoresEsto invoca al constructor de la misma clase java que tiene dos parámetros.
This
se utiliza para pasar la instancia de Java actual como parámetroSimilar a lo anterior, esto también se puede usar para devolver la instancia actual
Nota: Esto puede conducir a resultados no deseados mientras se usa en clases internas en los dos puntos anteriores. Dado que esto se referirá a la clase interna y no a la instancia externa.
This
se puede usar para obtener el identificador de la clase actualAunque esto puede hacerse por
Como siempre,
this
está asociado con su instancia y esto no funcionará en métodos estáticos.fuente
Para completar,
this
también se puede usar para referirse al objeto externofuente
this
es lo que estaba buscando! ;)super
Se refiere a la instancia actual de un objeto en particular, por lo que podría escribir algo como
Un caso de uso común
this
es evitar el sombreado. Tome el siguiente ejemplo:En el ejemplo anterior, queremos asignar el miembro de campo utilizando el valor del parámetro. Como comparten el mismo nombre, necesitamos una forma de distinguir entre el campo y el parámetro.
this
nos permite acceder a miembros de esta instancia, incluido el campo.fuente
En Swing es bastante común escribir una clase que implemente
ActionListener
y agregue la instancia actual (es decir, 'esto') como ActionListener para componentes.fuente
Es "una referencia al objeto en el contexto actual" de manera efectiva. Por ejemplo, para imprimir "este objeto" podría escribir:
Tenga en cuenta que su uso de "variable global" está algo apagado ... si lo está utilizando
this.variableName
, por definición, no es una variable global, es una variable específica de esta instancia en particular.fuente
Citando un artículo en programming.guide:
this
tiene dos usos en un programa Java.1. Como referencia al objeto actual
La sintaxis en este caso generalmente se parece a
Este tipo de uso se describe aquí: la referencia 'this' (con ejemplos)
2. Llamar a un constructor diferente.
La sintaxis en este caso generalmente se parece a
Este tipo de uso se describe aquí: esta (…) llamada de constructor (con ejemplos)
fuente
Se refiere a la instancia en la que se llama al método
fuente
La palabra clave this se usa para referir la variable actual de un bloque, por ejemplo, considere el siguiente código (solo un ejemplo, así que no espere el código JAVA estándar):
Eso es. la salida será "2". Si no utilizamos esta palabra clave, la salida será: 0
fuente
Los objetos tienen métodos y atributos (variables) que se derivan de las clases, para especificar qué métodos y variables pertenecen a un objeto en particular
this
se utiliza la palabra reservada. En el caso de las variables de instancia, es importante comprender la diferencia entre los parámetros implícitos y explícitos. Echa un vistazo a lafillTank
llamada delaudi
objeto.El valor entre paréntesis es el parámetro implícito y el objeto en sí es el parámetro explícito, los métodos que no tienen parámetros explícitos, usan parámetros implícitos, el
fillTank
método tiene un parámetro explícito y uno implícito.Veamos más de cerca el
fillTank
método en laCar
clase.En esta clase tenemos una variable de instancia "tanque". Podría haber muchos objetos que usan la variable de instancia de tanque, para especificar que la variable de instancia "tanque" se usa para un objeto en particular, en nuestro caso el objeto "audi" que construimos anteriormente, usamos la
this
palabra clave reservada. para las variables de instancia, el uso de 'this' en un método indica que la variable de instancia, en nuestro caso "tanque", es la variable de instancia del parámetro implícito.El compilador de Java agrega automáticamente la
this
palabra reservada para que no tenga que agregarla, es una cuestión de preferencia. No se puede usarthis
sin un punto (.) Porque esas son las reglas de Java (la sintaxis).En resumen.
this
una variable de instancia en un método indica que la variable de instancia pertenece al parámetro implícito o que es una variable de instancia del parámetro implícito.this
no se puede usar sin un punto (.) esto es sintácticamente inválidothis
también se puede usar para distinguir entre variables locales y variables globales que tienen el mismo nombrethis
palabra de reserva también se aplica a los métodos, para indicar que un método pertenece a un objeto en particular.fuente
Las variables de instancia son comunes a cada objeto que está creando. digamos, hay dos variables de instancia
Si notó el código anterior, hemos iniciado tres objetos y tres objetos están llamando al método SetMyInstanceValues. ¿Cómo crees que JVM asigna correctamente los valores para cada objeto? ahí está el truco, JVM no verá este código como se muestra arriba. en lugar de eso, verá el siguiente código;
fuente
(Sé que llego tarde pero shh estoy siendo el chico astuto que nunca me viste)
La palabra clave this en la mayoría de los lenguajes de programación orientados a objetos, si no todos, significa que es una referencia hacia la instancia de objeto actual de esa clase. Es esencialmente lo mismo que llamar a ese objeto desde fuera del método por su nombre. Eso probablemente no tenía sentido, así que elaboraré:
Fuera de la clase, para llamar a algo dentro de esa instancia del objeto, por ejemplo, decir que tiene un objeto llamado objeto y desea obtener un campo que necesitaría usar
Digamos, por ejemplo, que está intentando acceder a object.field desde el interior de su clase, por ejemplo, su constructor, podría usar
La palabra clave this esencialmente reemplaza la palabra clave del nombre del objeto cuando se llama dentro de la clase. Por lo general, no hay muchas razones para hacerlo si tiene dos variables con el mismo nombre, una de las cuales es un campo de la clase y la otra es solo una variable dentro de un método, ayuda a descifrar entre las dos . Por ejemplo, si tienes esto: (Ja, ¿entiendes? ¿ Esto ? Jeje ... ¿solo yo? Está bien :( Me iré ahora)
Eso causaría algunos problemas, el compilador no podría saber la diferencia entre la variable Nombre definida en los parámetros para el constructor y la variable Nombre dentro de las declaraciones de campo de su clase, por lo que en su lugar asignaría el parámetro Nombre a ... .. el valor del parámetro Nombre que no hace nada beneficioso y literalmente no tiene ningún propósito. Este es un problema común que la mayoría de los programas más nuevos hacen y yo también fui víctima. De todos modos, la forma correcta de definir este parámetro sería usar:
De esta manera, el compilador sabe que la variable Nombre que está tratando de asignar es parte de la clase y no parte del método y la asigna correctamente, lo que significa que asigna el campo Nombre a lo que haya puesto en el constructor.
Para resumir, esencialmente hace referencia a un campo de la instancia del objeto de la clase en la que está trabajando, por lo tanto, es la palabra clave "this", lo que significa que es este objeto o esta instancia. Es una buena práctica usar esto cuando se llama a un campo de su clase en lugar de simplemente usar el nombre para evitar posibles errores que son difíciles de encontrar cuando el compilador se ejecuta directamente sobre ellos.
fuente
Una búsqueda rápida en Google trajo este resultado: http://xahlee.org/java-a-day/this.html
Casi la palabra clave "this" es una referencia al objeto actual (en sí mismo).
fuente
this
es una referencia al objeto actual: http://download.oracle.com/javase/tutorial/java/javaOO/thiskey.htmlfuente
esto se puede usar dentro de algún método o constructor.
Devuelve la referencia al objeto actual.
fuente
Esto se refiere al objeto en el que estás "ahora". En otras palabras, esto se refiere al objeto receptor. Usas esto para aclarar a qué variable te refieres. Página de Java_whitepaper: 37
En el código de ejemplo anterior this.x / this.y se refiere a la clase actual que es Variables de clase de punto x e y donde (doble x, doble y) son valores dobles pasados de una clase diferente para asignar valores a la clase actual.
fuente
También estaba buscando la misma respuesta, y de alguna manera no podía entender el concepto claramente. Pero finalmente lo entendí desde este enlace
Esta es una palabra clave en Java. Que se puede usar dentro del método o constructor de clase. (Esto) funciona como una referencia a un objeto actual cuyo método o constructor está siendo invocado. esta palabra clave se puede usar para referir a cualquier miembro del objeto actual desde un método de instancia o un constructor.
Consulte los ejemplos en el enlace para una comprensión clara
fuente
Si las variables de instancia son las mismas que las declaradas en el constructor, entonces usamos "this" para asignar datos.
Espero que esto ayude.
fuente
En Java "esto" es una variable predefinida. Si usamos "this" en el método, eso significa que estamos obteniendo la referencia (dirección) del objeto actualmente en ejecución. Para un ejemplo.
this.age ---> edad del objeto actualmente en ejecución.
fuente
Me gustaría compartir lo que entendí de esta palabra clave. Esta palabra clave tiene 6 usos en java de la siguiente manera: -
1. Se puede utilizar para referirse a la variable de clase actual. Déjanos entender con un código. *
Comprendamos el problema si no usamos esta palabra clave en el ejemplo que se muestra a continuación:
Salida:-
En el ejemplo anterior, los parámetros (argumentos formales) y las variables de instancia son iguales. Entonces, estamos usando esta palabra clave para distinguir la variable local y la variable de instancia.
salida:
2. Invocar el método de clase actual.
Salida:
3. invocar el constructor de clase actual. Se utiliza para encadenar constructores.
Salida:
4. pasar como argumento en el método.
Salida:
5. pasar como argumento en la llamada al constructor
Salida:-
6. para devolver la instancia de clase actual
Salida:-
fuente