在Java中是按值传递数组还是按引用传递数组?

数组不是Java中的原始类型,但它们也不是对象,因此它们是按值还是按引用传递?它是否取决于数组包含的内容,例如引用或原始类型?

回答:

Everything in Java are passed-by value.。如果是Array(只不过是Object),则数组引用按值传递。(就像对象引用按值传递)。

当你将数组传递给其他方法时,实际上是复制对该数组的引用。

  • 通过该引用对数组内容进行的任何更改都会影响原始数组。
  • 但是,将引用更改为指向新数组不会更改原始方法中的现有引用。

    看到这篇文章。

Java是“按引用传递”还是“按值传递”?

请参见以下工作示例:-

public static void changeContent(int[] arr) {

// If we change the content of arr.

arr[0] = 10; // Will change the content of array in main()

}

public static void changeRef(int[] arr) {

// If we change the reference

arr = new int[2]; // Will not change the array in main()

arr[0] = 15;

}

public static void main(String[] args) {

int [] arr = new int[2];

arr[0] = 4;

arr[1] = 5;

changeContent(arr);

System.out.println(arr[0]); // Will print 10..

changeRef(arr);

System.out.println(arr[0]); // Will still print 10..

// Change the reference doesn't reflect change here..

}

以上是 在Java中是按值传递数组还是按引用传递数组? 的全部内容, 来源链接: utcz.com/qa/434875.html

回到顶部