适用于int [],但不适用于java中的int

时间:2016-12-29 06:45:46

标签: java

在调用函数(testInPlaceInteger(a))之后int a的值保持不变,但是在调用函数(squareArrayInPlace)之后int [] arr发生了变化。为什么int值不变? 以下是我的代码:

public class Test {
  public static void main(String[] args) {
    int a = 5;
    int[] arr = new int[] {3, 4};

    Test test = new Test();

    test.testInPlaceInteger(a);
    test.squareArrayInPlace(arr);

    System.out.println(a);

    for (int i : arr) {
      System.out.println(i);
    }
  }

  public void testInPlaceInteger(int num) {
    num *= num;
  }

  public void squareArrayInPlace(int[] intArray) {
    for (int i = 0; i < intArray.length; i++) {
      intArray[i] *= intArray[i];
    }
  }
}

输出:

5
9
16

1 个答案:

答案 0 :(得分:0)

因为int是基本类型并且是按值传递的。但是,intArray[i]是一个内存位置,因此您可以更改其中的值。