Logo Studenta

CFJ-A-Leccion-PasoPorValor-Referencia

¡Estudia con miles de materiales!

Vista previa del material en texto

Experiencia y Conocimiento para tu Vida© Todos los Derechos Reservados Global Mentoring
Hola, te saluda nuevamente Ubaldo Acosta. Espero que estés listo para comenzar con esta 
lección.
Vamos a estudiar el tema de métodos en Java.
¿Estás listo? ¡Vamos!
2
Curso de Fundamentos de Java
Experiencia y Conocimiento para tu Vida© Todos los Derechos Reservados Global Mentoring
Hasta ahora hemos utilizado tipos primitivos al enviar valores a nuestros métodos, 
esto se conoce como paso por valor, ya que como vimos en lecciones anteriores, 
sólo estamos copiando el valor del tipo primitivo, pero cada variable contiene su 
propia copia.
Por ejemplo en el código mostrado podemos observar un ejemplo de paso por 
valor, también conocido como valores de tipo primitivo. Lo que observamos en el 
código es que al crear una variable, en este caso x, y asignarle un valor, por ejemplo 
10, esta variable al ser modificada en otro método su valor original no se ve 
modificado, ya que solamente paso una copia de su valor original.
La manera de cambiar el valor de la variable x sería cambiándolo dentro del mismo 
método. Sin embargo en este ejemplo el método llamado cambiarValor intenta 
realizar un cambio a la variable x, pero como está fuera del alcance de este método 
acceder a esta variable, únicamente puede cambiar el valor de su variable local 
llamada i. Y al cambiar el valor de esta variable y regresar al método que hizo la 
llamada original
3
Curso de Fundamentos de Java
Experiencia y Conocimiento para tu Vida© Todos los Derechos Reservados Global Mentoring
Además del paso por valores, en Java tenemos el paso por referencia, esto básicamente que utilizaremos objetos como 
parámetros en lugar de tipos primitivos. Al utilizar un objeto como parámetro y enviarlo a un argumento de un método 
lo que estamos haciendo es enviando la referencia del objeto que se está deseando utilizar, y en lugar de utilizar una 
copia del valor del objeto, lo que realmente estamos haciendo es apuntar al mismo objeto, con la finalidad de 
modificarlo directamente, sin necesidad de hacer una copia.
Esto se debe a que imaginemos que un objeto contiene 50 atributos o más, y si se realizar una copia del objeto, lo que 
estaríamos generando realmente es una copia de estos 50 valores. Por ello, cuando trabajamos con objetos, y los 
enviamos como argumentos a un método, sólo estamos enviando el valor de la referencia donde se ubica este objeto, 
de tal manera que podemos modificar directamente el objeto, ya sea desde la variable original que apunta al objeto, o 
desde la variable local que funciona como argumento en la llamada del método.
En el código podemos observar la variable p de tipo Persona, esta clase la crearemos en la sección de ejercicios, pero 
básicamente tiene un atributo llamado nombre de tipo String, y lo que podemos observar es que se modifica el valor 
del atributo nombre, esto debido a que la variable local llamada arg apunta al mismo objeto creado en la memoria 
Heap de tipo Persona, y por lo tanto al modificar el atributo del mismo objeto, entonces se modifica el objeto creado 
originalmente, y podemos acceder a este cambio incluso desde otros métodos.
Esto trae lugar a discusiones, ya que se dice que Java únicamente pasa parámetros por valor, y no por referencia, y de 
alguna manera es cierto, ya que como podemos observar en la memoria stack, el valor de p se “Copia” a la variable arg
al llamar al método modificarPersona, pero debido a que lo que recibe arg es la dirección de memoria del objeto 
Persona creado originalmente, entonces la variable arg puede acceder a los atributos y métodos del objeto p, y de esta 
manera es que es posible modificar el estado o contenido del objeto original. Y al terminar de ejecutar el método 
modificarPersona y regresar al método main es posible acceder a estos cambios, y en lugar de mandar a imprimir Juan 
que era el nombre original, se manda a imprimir el valor de Carlos, que es el valor modificado por la variable arg.
De esta manera podemos observar como en Java cuando trabajamos con objetos, realmente lo que estamos 
proporcionando es el valor de la referencia de memoria, en este caso el valor de 0x333, y con esta referencia 
accedemos directamente al objeto, y así podemos modificarlo. Finalmente estas modificaciones las podremos acceder 
incluso fuera del método donde fue creado originalmente el objeto, o desde el método donde se creó dicho objeto.
4
Curso de Fundamentos de Java
Experiencia y Conocimiento para tu Vida© Todos los Derechos Reservados Global Mentoring 5
Curso de Fundamentos de Java
Experiencia y Conocimiento para tu Vida© Todos los Derechos Reservados Global Mentoring
En Global Mentoring promovemos la Pasión por la Tecnología Java. Te invitamos a visitar nuestro
sitio Web donde encontrarás cursos Java Online desde Niveles Básicos, Intermedios y Avanzados,
y así te conviertas en un experto programador Java.
Además agregamos nuevos cursos para que continúes con tu preparación como programador Java
profesional. A continuación te presentamos nuestro listado de cursos:
Datos de Contacto:
Sitio Web: www.globalmentoring.com.mx
Email: informes@globalmentoring.com.mx
6
Fundamentos de Java
Fundamentos de Java
Programación con Java
Java con JDBC
HTML, CSS y JavaScript
Servlets y JSP’s
Struts Framework
Hibernate Framework
Spring Framework
JavaServer Faces
Java EE (EJB, JPA y Web Services)
JBoss Administration
Android con Java
HTML5 y CSS3
Curso de Fundamentos de Java

Continuar navegando