How to Pass Integer by Reference in Java?

2025年5月9日 | 阅读 5 分钟

在 Java 中,像 int 这样的原始类型是按值传递的,这意味着在方法中对它们的更改不会影响原始值。但是,通过使用包装器类、数组或其他可变对象(如 AtomicInteger 或 MutableInt),整数可以按引用传递,从而允许在方法中修改其值。

方法:使用包装器类

在此方法中,整数值被封装在一个自定义的可变包装器中。通过将包装器对象传递给方法,可以间接修改整数值,从而在 Java 中实现按引用传递行为。

算法

步骤 1: 从定义要修改的整数值开始(例如,originalValue = 10)。

步骤 2: 创建一个自定义类(IntWrapper)的实例,将整数包装在一个可变对象中。

步骤 3: 将 IntWrapper 对象传递给一个将修改对象中整数值的方法。

步骤 4: 在方法中,通过更新 IntWrapper 对象的 value 字段来更改整数的值。

步骤 5: 方法执行后,从 IntWrapper 对象打印或访问修改后的值。

实施

输出

 
Modified Integer Value: 20   

方法:使用数组包装原始值

此方法使用长度为一的数组来包装整数值。通过将数组传递给方法,可以通过数组的引用修改整数值,从而在 Java 中模拟按引用传递行为。

算法

步骤 1: 定义一个整数 originalValue 并为其赋值(例如,10)。

步骤 2: 创建一个数组 wrappedInteger 并将整数存储为其唯一的元素。

步骤 3: 将数组 wrappedInteger 传递给一个方法(modifyInteger),在该方法中可以修改整数值。

步骤 4: 在方法中,更改存储在数组中的整数的值。

步骤 5: 从方法返回后,从数组访问修改后的值并打印它。

实施

输出

 
Modified Integer Value: 20   

方法:使用 AtomicInteger

此方法利用了 java.util.concurrent.atomic 包中的 AtomicInteger 类。通过将整数包装在 AtomicInteger 对象中,可以安全地修改和访问该值,从而在 Java 中实现按引用传递行为。

算法

步骤 1: 定义原始整数值(例如,originalValue = 10)。

步骤 2: 通过将整数值传递给构造函数来创建 AtomicInteger 对象。

步骤 3: 将 AtomicInteger 对象传递给一个方法(modifyInteger),在该方法中将修改整数值。

步骤 4: 在方法中,使用 AtomicInteger 的 set() 方法更新整数值。

步骤 5: 方法执行后,使用 get() 方法从 AtomicInteger 中检索并打印修改后的值。

实施

输出

 
Modified Integer Value: 20   

方法:使用 Apache MutableInt 类

Apache Commons Lang 库中的 MutableInt 类允许将整数包装在一个可变对象中。此方法通过引用修改整数的值,使其可以在方法中更新该值。

算法

步骤 1: 用起始值初始化 MutableInt 对象(例如,8)。

步骤 2: 调用 increment 方法并将 MutableInt 对象作为参数传递。

步骤 3: 在 increment 方法中,使用 increment() 函数将 MutableInt 对象中存储的值加 1。

步骤 4: increment 方法执行后,MutableInt 对象的值将被更新。

步骤 5: 使用 System.out.println 语句显示 MutableInt 对象的修改后的值。

实施

输出

 
The updated value of the MutableInt object is: 9