Autor
|
Tema: paso por referencia de un integer (Leído 15,221 veces)
|
kasiko
Desconectado
Mensajes: 218
|
a ver, los datos primitivos, siempre pasan por valor, y los objetos por referencia, entonces esto: public class NewClass3 { public static void main(String [] args){ Integer n=new Integer(5); obj k=new obj(); k.imp(n); System.out.println(n); }
}
class obj{ public void imp(Integer n){ ++n; } }
¿no deberia imprimir 6?
|
|
|
En línea
|
Nos vemos...
|
|
|
Oblivi0n
Desconectado
Mensajes: 392
Odio las ranas.
|
Cuando pasas algo por valor, creas una copia de ese dato, y se la pasas a una función Cuando pasas algo por referencia, lo que estas pasando es la direccion de memoria de ese dato, y no, no se restringe el uso de parametros por referencia solo a objetos (al menos en C++ puedes pasar todo tipo de variables por referencia)
Por defecto, el paso de variables es por valor,y en tu caso, tambien, lo que tu haces es pasar a la funcion imp(Integer n), una variable por valor, con lo cual, le estas pasando una copia, al hacer ++n, ese aumento solo es valido dentro de esa funcion.
Para que haga lo que tu quieres, tienes que pasar por referencia la variable n, o, hacer el metodo de tipo int(o el que sea) que devuelva el valor 6(en este caso) a la variable n, para luego imprimirlo
Saludos!
|
|
|
En línea
|
|
|
|
kasiko
Desconectado
Mensajes: 218
|
Seguramente este equivocado, pero creo una variable llamada n como un objeto de tipo integer, luego se supone que le paso un objeto... y tengo entendio que en java, los strings y los objetos siempre se pasan por referencia.
|
|
|
En línea
|
Nos vemos...
|
|
|
Oblivi0n
Desconectado
Mensajes: 392
Odio las ranas.
|
Cito de la pagina web -> http://www.joseduenas.com/archivos/327En el paso de parámetros de variables a métodos en Java se suele decir que: las variables de tipo simple (int, double, etc) se pasan por valor los objetos se pasan por referencia. Ésto no es cierto, después de consultar varias fuentes puedo concluir que en Java las variables, ya sean simples u objetos, se pasan siempre por valor. No se como se hará en java, pero en C / C++, se utilizan punteros, (Java no los tiene, si no me equivoco) P.D: He leido en Error500 http://www.error500.net/garbagecollector/archives/categorias/java/paso_de_parametros_a_funciones_java.php algo como lo que tu dices, la verdad, es un lio jajaja
|
|
|
En línea
|
|
|
|
sapito169
Desconectado
Mensajes: 629
|
no existe el paso por referensia ni punteros en java ni los necesitamos es mas el mundo es mejor cuando borro los unicos punteros en que existieron java segun las sabias palabras de golsin amen
|
|
|
En línea
|
|
|
|
kasiko
Desconectado
Mensajes: 218
|
no existe el paso por referensia ni punteros en java ni los necesitamos es mas el mundo es mejor cuando borro los unicos punteros en que existieron java segun las sabias palabras de golsin amen
lo siento, pero no me aclaras nada
|
|
|
En línea
|
Nos vemos...
|
|
|
Oblivi0n
Desconectado
Mensajes: 392
Odio las ranas.
|
no existe el paso por referensia ni punteros en java ni los necesitamos es mas el mundo es mejor cuando borro los unicos punteros en que existieron java segun las sabias palabras de golsin amen
para decir cosas asi, mejor no las digas... si amas Java y todo lo relaccionado con ello, vale, pero contesta para ayudar, no para despotricar
|
|
|
En línea
|
|
|
|
egyware
|
No se como se hará en java, pero en C / C++, se utilizan punteros, (Java no los tiene, si no me equivoco)
LOL LOL LOL Java si tiene punteros xD TODO es puntero, pero NO HAY aritmetica de punteros. Lo que pasa que hay cierto objetos inmutables como los String, que nunca se modifican a si mismo si no que entregan una copia modificada. Es posible que ocurra lo mismo con Integer Prueba pasando un Arreglo y podras pasar datos por referencia, es una buena emulación de los punteros de C/C++ Saludos!!
|
|
|
En línea
|
|
|
|
|
ChavalChavito
Desconectado
Mensajes: 43
Y ahora que pasa...
|
Java pasa los parámetros por valor(cuando un argumento se pasa a una función, la función recibe una copia del valor original. Por lo tanto, si la función modifica el parámetro, sólo la copia cambia y el valor original permanece intacto).. Para ver el 6? /** * * @author Chavito */ public class Main {
public static void main(String[] args) { Entero n=new Entero(5); imp(n); System.out.println(n); }
public static void imp(Entero n){ n.valor++; } } class Entero{ public int valor; public Entero(int valor){ this.valor=valor; } }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[DUDA] paso por valor o por referencia (byval/ byref)
Programación Visual Basic
|
AlxSpy
|
8
|
4,779
|
12 Julio 2011, 15:45 pm
por AlxSpy
|
|
|
Paso por referencia
Java
|
mapers
|
8
|
5,425
|
27 Julio 2011, 12:27 pm
por [Case]
|
|
|
Tipos de paso por referencia y paso por referencia de tipo apuntador
Programación C/C++
|
CATBro
|
3
|
3,503
|
8 Abril 2012, 08:23 am
por Beakman
|
|
|
SQLite integer como float
Bases de Datos
|
Dukatus
|
0
|
2,343
|
17 Marzo 2013, 01:20 am
por Dukatus
|
|
|
Duda en paso de valores por referencia de Java
Java
|
arts
|
5
|
3,044
|
25 Octubre 2013, 23:59 pm
por ~ Yoya ~
|
|