Parametros de entrada,salida, entrada-salida

jaumesagues
04 de Enero del 2005
Quisiera saber como puedo hacer una funcion con parametros de entrada, salida, o entrada-salida

Lucas
04 de Enero del 2005
Los parametros en JAVA, se pasan de la siguiente forma: Tipos primitivos (byte, char, short, int, long, float, double) por VALOR, esto es, la funciona recibe una copia del valor de la variable. Resto de tipos (Objetos y Arrays) se pasan por REFERENCIA, esto es, se pasa una REFERENCIA del objeto/array, no una copia, por lo que si en el metodo que recibes la referencia modificas el contenido/estado del objeto, al terminar la funcion el que te invoco vera ese objeto modificado. En cuanto a lo de argumentos de entrada, salida y entrada-salida, a diferencia de otros lenguajes como ADA o PL/SQL, los argumentos en JAVA funcionan asi: Una funciona recibe cero o mas argumentos de ENTRADA, que es lo que se pone entre parentesis y devuelve uno o ningun argumento de SALIDA, que es el resultado de la funcion. Asi, los argumentos de entrada no son los de salida ni se comparten ni nada.

asdf
04 de Enero del 2005
Todos, absolutamente todos los objetos o datos
primitivos se pasan por VALOR.

No confundais lo que es un objeto y lo que es una
referencia a un objeto.

Lucas, lo que dices es correcto si lo que se pasara
entre métodos fueran los objetos en si. Pero nunca
se trabaja directamente con un objeto, si no con
una referencia al mismo.

Cuando tu dices que pasas un objeto a un método
lo que realmente quieres decir es que pasas una
referncia a un objeto (digamos que una referencia es
el camino que nos lleva a un objeto).
Esta referencia recibida en el método es una copia
de la pasada en la llamada. Sin embargo, como es
una referncia te permite modificar el objeto al que
"apunta", pq representa el mismo "camino" que la
referencia original usada en la llamada.

Como dije, la referencia recibida en el método es una
copia de la pasada en la llamada, se pasa por valor.
Puedes modificar el objeto, pero no puedes cambiar
la referencia original. Me explico; create un metodo
que reciba una referencia a un objeto. Dentro del
metodo create un nuevo objeto y haz que la referencia
recibida "apunte" a ese nuevo objeto. Al salir del
método y volver al código que invoca que el método,
la referencia usada en la llamada sigue apuntando al
objeto original.

Es un problema muy comun confundir entre un objeto
y una referencia a un objeto.

Todo lo recibido en un método en java se recibe por
VALOR. Ahora bien, debeis tener claro que es lo que
se envia.

Saludos

jaumesagues
04 de Enero del 2005
Gracias a todos por ayudarme

colladox
04 de Enero del 2005
En java cuando una función tiene como parámetro un objeto este siempre se pasa por referencia, puesto que java siempre representa las declaraciones a objetos como punteros internamente, en cambio los tipos primitivos en java siempre se pasan por valor, sin posibilidad de pasarlos por referencia, así que si le pasas un tipo int a una función este siempre se pasará por valor, a no ser que le pases el objeto Integer. Lo que no estoy seguro es si pasas un array, creo que se pasan por referencia pero no estoy seguro.

Un saludo.

asdf
04 de Enero del 2005
Las referencias pasadas a funciones en Java se
pasan por VALOR. Absolutamente todas.

No os cofundais entre referencia y objeto.
Nunca se trabaja directamente con un objeto, si no
con una referencia al mismo.

Saludos.