Porque si pasas un objeto a un método y este metodo, modifica el objeto, al terminar el método y retornar al método llamante el argumento ha sido modificado.
Yo esto lo llamo "paso por referencia".
Los tipos básicos, obviamente, son todos por valor.
-- "En teoría no hay diferencia entre teoría y práctica. En la práctica, sí la hay."
Sí, pero en Java el valor de un objeto es su referencia, así que cuando pasas un objeto estás pasando por valor, sí... pero el valor de la referencia. No copias para nada el objeto. Por lo tanto, cuando pasas por ejemplo un String, estás pasando un puntero igual que en C.
Otra cosa es que algunos malos programadores tengan malas costumbres como hacer://crear un string con mil letras a String s = ""; for ( int i = 0 ; i 1000 ; i++ ) {
s += "a"; }
Esto es una burrada porque en cada iteración estás creando un nuevo objeto String y copiando los caracteres del que hay. Pero no es culpa de Java, sino del programador que no sabe que para estas cosas está la clase StringBuffer:)
Re:Sobre Java lento en programas de escritorio
(Puntos:2)( http://barrapunto.com/~Grohl/bitacora | Última bitácora: Lunes, 09 Marzo de 2015, 09:07h )
¿ A que llamas por valor ?
Porque si pasas un objeto a un método y este metodo, modifica el objeto, al terminar el método y retornar al método llamante el argumento ha sido modificado.
Yo esto lo llamo "paso por referencia".
Los tipos básicos, obviamente, son todos por valor.
"En teoría no hay diferencia entre teoría y práctica. En la práctica, sí la hay."
Re:Sobre Java lento en programas de escritorio
(Puntos:2)( http://blog.irreality.eu/ )
Otra cosa es que algunos malos programadores tengan malas costumbres como hacer:
String s = "";
for ( int i = 0 ; i 1000 ; i++ )
{
s += "a";
}
Esto es una burrada porque en cada iteración estás creando un nuevo objeto String y copiando los caracteres del que hay. Pero no es culpa de Java, sino del programador que no sabe que para estas cosas está la clase StringBuffer
Mi bitácora: Reductio ad Absurdum 2.1 [irreality.eu]