elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  paso por referencia de un integer
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: paso por referencia de un integer  (Leído 15,221 veces)
kasiko

Desconectado Desconectado

Mensajes: 218



Ver Perfil
paso por referencia de un integer
« en: 16 Diciembre 2010, 22:11 pm »

 a ver, los datos primitivos, siempre pasan por valor, y los objetos por referencia,
entonces esto:
Código:

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 Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: paso por referencia de un integer
« Respuesta #1 en: 16 Diciembre 2010, 22:46 pm »

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 Desconectado

Mensajes: 218



Ver Perfil
Re: paso por referencia de un integer
« Respuesta #2 en: 16 Diciembre 2010, 22:54 pm »

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 Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: paso por referencia de un integer
« Respuesta #3 en: 16 Diciembre 2010, 23:42 pm »

Cito de la pagina web ->  http://www.joseduenas.com/archivos/327
Citar
En 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 Desconectado

Mensajes: 629



Ver Perfil
Re: paso por referencia de un integer
« Respuesta #4 en: 17 Diciembre 2010, 06:13 am »

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 Desconectado

Mensajes: 218



Ver Perfil
Re: paso por referencia de un integer
« Respuesta #5 en: 17 Diciembre 2010, 14:46 pm »

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 Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: paso por referencia de un integer
« Respuesta #6 en: 17 Diciembre 2010, 15:51 pm »

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


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: paso por referencia de un integer
« Respuesta #7 en: 18 Diciembre 2010, 18:54 pm »

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

kasiko

Desconectado Desconectado

Mensajes: 218



Ver Perfil
Re: paso por referencia de un integer
« Respuesta #8 en: 21 Enero 2011, 21:07 pm »

total, que la explicacion queda ausente.... pues espero que no me hagan esta pregunta en la certificacion  :rolleyes:
En línea

Nos vemos...

ChavalChavito

Desconectado Desconectado

Mensajes: 43


Y ahora que pasa...


Ver Perfil
Re: paso por referencia de un integer
« Respuesta #9 en: 24 Enero 2011, 06:26 am »

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?
Código:
/**
 *
 * @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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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 Último mensaje 12 Julio 2011, 15:45 pm
por AlxSpy
Paso por referencia
Java
mapers 8 5,425 Último mensaje 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 Último mensaje 8 Abril 2012, 08:23 am
por Beakman
SQLite integer como float
Bases de Datos
Dukatus 0 2,343 Último mensaje 17 Marzo 2013, 01:20 am
por Dukatus
Duda en paso de valores por referencia de Java
Java
arts 5 3,044 Último mensaje 25 Octubre 2013, 23:59 pm
por ~ Yoya ~
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines