![Ruby String Trim Whitespace](https://trspos.com/wp-content/uploads/ruby-string-trim-whitpace-400x267.jpg)
Cómo pasar por referencia en Java
![Cómo pasar por referencia en Java](https://trspos.com/wp-content/uploads/pase-por-referencia-en-java.jpg)
En Java, los tipos de datos primitivos se pasan por valor, lo que significa que se hace una copia del valor y, una vez que se modifica ese valor en la función, la copia se destruye y no afecta a la variable original. Sin embargo, los objetos en Java se pasan por referencia, lo que significa que una referencia a ese objeto se pasa a la función y, por lo tanto, cualquier cambio en el objeto dentro de la función afectará el objeto original. En este artículo, se explorará cómo pasar por referencia en Java y las diversas formas de lograr esto.
Usando objetos como parámetros
Como se mencionó anteriormente, los objetos en Java se pasan por referencia de forma predeterminada. Por lo tanto, para pasar un objeto a una función que haga cambios permanentes en los valores del objeto, simplemente se pasa el objeto como un parámetro. Cualquier cambio hecho dentro de la función afectará el objeto original.
Ejemplo:
public class Main {
public static void main(String[] args) {
Person p = new Person("John");
System.out.println(p.getName()); // Output: John
changeName(p);
System.out.println(p.getName()); // Output: Alex
}
public static void changeName(Person person) {
person.setName("Alex");
}
}
class Person {
String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
El ejemplo anterior muestra cómo se puede cambiar el nombre de una persona dentro de una función pasando la persona como un objeto.
Usando matrices como parámetros
Las matrices también se pasan por referencia en Java. Por lo tanto, cuando se pasa una matriz a una función, se pasa su referencia, y cualquier cambio que se haga en la matriz afectará la matriz original.
Ejemplo:
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
changeArray(a);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]); // Output: 10 20 30
}
}
public static void changeArray(int[] b) {
for (int i = 0; i < b.length; i++) {
b[i] *= 10;
}
}
}
En el ejemplo anterior, se pasó una matriz de enteros a la función changeArray
y se cambió el valor de sus elementos. La matriz original se modificó, lo que se demostró en las salidas.
Usando clases de contenedor
En Java, una clase de contenedor como AtomicInteger
o AtomicReference
puede usarse para pasar valores primitivos por referencia. Estas clases de contenedor proporcionan un envoltorio para el valor y se pueden pasar como un parámetro a la función.
Ejemplo:
import java.util.concurrent.atomic.AtomicInteger;
public class Main {
public static void main(String[] args) {
AtomicInteger num = new AtomicInteger(5);
System.out.println(num.get()); // Output: 5
changeNumber(num);
System.out.println(num.get()); // Output: 10
}
public static void changeNumber(AtomicInteger n) {
n.set(10);
}
}
En el ejemplo anterior, se usó la clase AtomicInteger
para pasar un entero como referencia a una función. El valor original se cambió dentro de la función y se demostró mediante la salida.
Conclusión
En Java, los objetos se pasan por referencia de forma predeterminada y puede causar problemas si no se entiende este concepto. Las matrices también se pasan por referencia. Además, las clases de contenedor pueden usarse para pasar valores primitivos por referencia.
Si necesitas realizar cambios en el objeto original dentro de una función, deberás pasar el objeto como parámetro, caso contrario deberás crear una copia del objeto y usarla.
Preguntas frecuentes
¿Qué es pasar por referencia en Java?
Pasar por referencia en Java significa pasar una referencia a un objeto como argumento de una función.
¿Cómo se pasa por referencia en Java?
Los objetos y matrices se pasan por referencia en Java de forma predeterminada. Además, las clases container, como AtomicInteger
, también pueden usarse para pasar por referencia valores primitivos.
¿Qué significa pasar por valor en Java?
Pasar por valor en Java significa que se copia el valor de la variable y se pasa a una función. Cualquier cambio realizado dentro de la función no afectará a la variable original.
¿Por qué no se pueden pasar por referencia los tipos de datos primitivos en Java?
En Java, los tipos de datos primitivos se pasan por valor porque Java es un lenguaje orientado a objetos y los tipos de datos primitivos no son objetos.
Deja una respuesta