如何在Java中通过引用传递整数
Java是按值传递的,不能直接在Java中通过引用传递整数。 Java中创建的对象是按值传递的引用。因此可以通过以下一些方法来实现:
- 通过创建 Wrapper 类:我们知道 Integer 是一个不可变的类,所以我们通过这个方法将一个整数值包装在一个可变对象中。
方法:
- 获取要传递的整数
- 用这个整数创建另一个类的对象
- 使用包装类将整数值包装在可以更改或修改的可变对象中
- 现在每当你需要整数时,你必须通过类的对象来获取它
- 因此,整数已通过引用传递
下面是上述方法的实现:
例子:
// Java program to pass the integer by reference class Test { public Integer value; Test(Integer value) { // Using wrapper class // so as to wrap integer value // in mutable object // which can be changed or modified this.value = value; } @Override public String toString() { return String.valueOf(value); } } class Main { public static void modification(Test x) { x.value = 1000; } public static void main(String[] args) { Test k = new Test(50); modification(k); // Modified value gets printed System.out.println(k); } }
输出:
1000
- 使用数组包装原始值:这个包装过程是通过使用长度为 1 的数组来完成的。
方法:
- 获取要传递的整数
- 这个包装过程是通过使用长度为 1 的数组来完成的。
- 现在每当你需要整数时,你必须通过数组的对象来获取它
- 因此,整数已通过引用传递
下面是上述方法的实现:
例子:
// Java program to pass the integer by reference class PassByReference { public static void increment(int[] array) { // increment in the actual value array[0]++; } public static void main(String[] args) { int k = 100; // wrapping is done // by using array of length one int[] array = { k }; // Reference is passed increment(array); // incremented value printed System.out.println(array[0]); } }
输出:
101
- 使用 AtomicInteger:这是一个内置的Java类,它提供了一个单线程环境。
方法:
- 获取要传递的整数
- 通过将此整数作为参数传递给它的构造函数来创建一个 AtomicInteger 对象
- 现在,每当您需要整数时,您都必须通过 AtomicInteger 的对象来获取它
- 因此,整数已通过引用传递
下面是上述方法的实现:
例子:
// Java program to pass the integer by reference import java.util.concurrent.atomic.AtomicInteger; class PassByReference { public static void setvalue(AtomicInteger x) { // setting new value // thus changing the actual value x.set(1000); } public static void main(String[] args) { // provides single threaded environment AtomicInteger k = new AtomicInteger(50); // passed by reference setvalue(k); System.out.println(k); } }
输出:
1000
- 使用 Apache MutableInt 类:我们可以通过从 Commons Apache 导入包来使用 MutableInt 类。
方法:
- 获取要传递的整数
- 通过将此整数作为参数传递给它的构造函数来创建一个 MutableInt 对象
- 现在每当你需要整数时,你必须通过 MutableInt 的对象来获取它
- 因此,整数已通过引用传递
下面是上述方法的实现:
例子:
// Java program to pass the integer by reference import org.apache.commons.lang3.mutable.MutableInt; class Main { public static void increment(MutableInt k) { k.increment(); } public static void main(String[] args) { // Using Mutable Class whose object's fields // can be changed accordingly MutableInt k = new MutableInt(8); increment(k); System.out.println(k); } }
输出:
9