📜  如何在Java中通过引用传递整数

📅  最后修改于: 2022-05-13 01:55:35.682000             🧑  作者: Mango

如何在Java中通过引用传递整数

Java是按值传递的,不能直接在Java中通过引用传递整数。 Java中创建的对象是按值传递的引用。因此可以通过以下一些方法来实现:

  1. 通过创建 Wrapper 类:我们知道 Integer 是一个不可变的类,所以我们通过这个方法将一个整数值包装在一个可变对象中。

    方法:

    1. 获取要传递的整数
    2. 用这个整数创建另一个类的对象
    3. 使用包装类将整数值包装在可以更改或修改的可变对象中
    4. 现在每当你需要整数时,你必须通过类的对象来获取它
    5. 因此,整数已通过引用传递

    下面是上述方法的实现:

    例子:

    // 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
  2. 使用数组包装原始值:这个包装过程是通过使用长度为 1 的数组来完成的。

    方法:

    1. 获取要传递的整数
    2. 这个包装过程是通过使用长度为 1 的数组来完成的。
    3. 现在每当你需要整数时,你必须通过数组的对象来获取它
    4. 因此,整数已通过引用传递

    下面是上述方法的实现:

    例子:

    // 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
  3. 使用 AtomicInteger:这是一个内置的Java类,它提供了一个单线程环境。

    方法:

    1. 获取要传递的整数
    2. 通过将此整数作为参数传递给它的构造函数来创建一个 AtomicInteger 对象
    3. 现在,每当您需要整数时,您都必须通过 AtomicInteger 的对象来获取它
    4. 因此,整数已通过引用传递

    下面是上述方法的实现:

    例子:

    // 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
  4. 使用 Apache MutableInt 类:我们可以通过从 Commons Apache 导入包来使用 MutableInt 类。

    方法:

    1. 获取要传递的整数
    2. 通过将此整数作为参数传递给它的构造函数来创建一个 MutableInt 对象
    3. 现在每当你需要整数时,你必须通过 MutableInt 的对象来获取它
    4. 因此,整数已通过引用传递

    下面是上述方法的实现:

    例子:

    // 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