Foros del Web » Programación para mayores de 30 ;) » Java »

pasar valores por referencia , variable u objeto

Estas en el tema de pasar valores por referencia , variable u objeto en el foro de Java en Foros del Web. Hola una pregunta, si tengo que pasar parametros a funciones. en java, como es la manera, ?? por ejemplo si tengo una variable comun, una ...
  #1 (permalink)  
Antiguo 10/12/2013, 07:08
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 2 meses
Puntos: 3
pasar valores por referencia , variable u objeto

Hola una pregunta, si tengo que pasar parametros a funciones. en java, como es la manera, ??

por ejemplo si tengo una variable comun, una variable de tipo primitiva.. la paso y el valor se envia.

pero si tengo un objeto , paso el objeto pero lo que se pasa en la referencia, en ningun momento se coloca, lo que era la direccion del puntero, como el lenguaje C?

ocurre CREO , cuando tengo un objeto y le asigno a una variable, le indico la direccion para que apunte, la variable , hacia el objeto .....

en C era de esta manera..

Código PHP:
int  variablenueva=10;

suma(*variablenueva); 

Última edición por aldo_rengo; 10/12/2013 a las 07:15
  #2 (permalink)  
Antiguo 10/12/2013, 07:20
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: pasar valores por referencia , variable u objeto

Java no es como en C

Resumiendo muchísimo: Los tipos básicos en Java se pasan por valor, los objetos por referencia, los arreglos (el array típico) va por valor (ojo, que ArrayList es una clase y por lo tanto van por referencia).

En cualquier caso, intenta que tus metodos devuelvan el elemento que modifiquen en el "return".

http://www.consultoriajava.com/publi..._tipicos.shtml
  #3 (permalink)  
Antiguo 10/12/2013, 11:17
 
Fecha de Ingreso: diciembre-2013
Ubicación: Asturias
Mensajes: 1
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: pasar valores por referencia , variable u objeto

Mira estas dos clases:
La primera es la clase Persona, que luego es utilizada en la clase SeatManager
La clase te la dejo aqui[URL="http://adf.ly/aYOOg"]http://adf.ly/aYOOg[/URL].

Este es mi canal es YouTube: http://www.youtube.com/user/adrenalinecodigo
y tambien puedes seguirme en Twitter en @Adrenaline_YT
colsutame culquier duda que tengas
  #4 (permalink)  
Antiguo 10/12/2013, 12:39
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: pasar valores por referencia , variable u objeto

Hola,

Cita:
Iniciado por rgf1987 Ver Mensaje
... Resumiendo muchísimo: Los tipos básicos en Java se pasan por valor, los objetos por referencia, los arreglos (el array típico) va por valor (ojo, que ArrayList es una clase y por lo tanto van por referencia).


Ese es un error típico que clasifican como error típico, pero los parámetros se pasan por valor siempre. La diferencia es que internamente Java usa referencias a objetos. Pero aún así los parámetros se pasan por valor en todos los casos.

http://www.forosdelweb.com/f45/pasar...6/#post4081309
http://img717.imageshack.us/img717/4426/valref.jpg

Saludos,
  #5 (permalink)  
Antiguo 11/12/2013, 05:28
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: pasar valores por referencia , variable u objeto

Si tienes un main con una variable
Si llamas a un método pasandole la variable tipo int por ejemplo y la modificas dentro, la variable solo se modifica dentro del desarrollo del método no?, esto es lo que seria paso por valor no??

si pasas un objeto... y lo modificas en el método el objeto cambia en el main también
¿eso se entiende como paso por referencia?

¿Estoy equivocandome?


En el ejemplo siguiente por ejemplo:
Código Java:
Ver original
  1. public class Prueba {
  2.     private int numero;  
  3.     public int getNumero() {
  4.         return numero;
  5.     }
  6.  
  7.     public void setNumero(int numero) {
  8.         this.numero = numero;
  9.     }
  10.  
  11.     public static void main(String args[]) {
  12.          Prueba p = new Prueba();
  13.          p.setNumero(5);
  14.          int num = 5;
  15.          ref(p);
  16.          valor(num);
  17.          System.out.println(p.getNumero());
  18.          System.out.println(num);
  19.          
  20.     }
  21.        
  22.      public static void ref(Prueba p){
  23.         p.setNumero(555);
  24.      }
  25.      public static void valor(int num){
  26.             num = 6;
  27.      }
  28. }

Se te imprimirá 5 y 555

El objeto Prueba p no se está pasando por referencia???
  #6 (permalink)  
Antiguo 11/12/2013, 13:53
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: pasar valores por referencia , variable u objeto

Es un poco paja mental, pero lo que dice HackmanC es cierto.

Una forma sencilla de explicarlo es que lo que se pasa es la referencia al objeto, por lo que es por valor de la referencia.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #7 (permalink)  
Antiguo 11/12/2013, 18:07
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: pasar valores por referencia , variable u objeto

Hola,

Como indica Xerelo, son puro tecnicismos,

Cita:
Iniciado por rgf1987 Ver Mensaje
...
si pasas un objeto... y lo modificas en el método el objeto cambia en el main también
¿eso se entiende como paso por referencia?

¿Estoy equivocandome?
...
El objeto Prueba p no se está pasando por referencia???
No estás cambiando la referencia denominada p, estás cambiando el contenido de la referencia p, que es muy diferente. Por ejemplo:

Código:
p.setValor(5);

p = q;
Esas son dos cosas muy diferentes; la primera estás cambiando el valor de alguna variable interna de la referencia p, en el segundo caso estás cambiando la referencia.

Como en tu ejemplo no estás cambiando la referencia entonces se 'siente' como que pasara por referencia. Pero realmente estás pasando una copia de la referencia p. En el vínculo a la imagen con el gráfico que hice esta claramente el concepto.

Usando tu ejemplo:

Código Java:
Ver original
  1. public static void ref(Prueba p){
  2.         p.setNumero(555);
  3.      }

En ese caso p 'apunta' al objeto en el main que también se llama 'p' y que tiene el valor 5. Y solamente estás cambiando el contenido de ese 5 por un 555. Si modificamos un poco tu código se puede ver que p no es la 'misma' referencia. Sino que es otra y por lo tanto es una copia, osea 'pass by value'.

Código Java:
Ver original
  1. public static void ref(Prueba p){
  2.         p = new Prueba(); // P apunta a un nuevo objeto
  3.         p.setNumero(555);
  4.      }

Si se pasara por 'referencia' la variable, el viejo p del main apuntaría al nuevo objeto con el valor 555. Pero no es así, el p del main apunta al valor antiguo y nunca se modificó, por lo tanto no se pasó por referencia. El 'p' del parametro es una copia (por valor), aunque inicialmente 'apunta' al mismo objeto del main.

Saludos,

Última edición por HackmanC; 11/12/2013 a las 18:38 Razón: Agregar el ejemplo
  #8 (permalink)  
Antiguo 12/12/2013, 02:04
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: pasar valores por referencia , variable u objeto

Perfecto. Muchas gracias por la aclaración a los dos!!!!!

Etiquetas: ola
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:13.