当前位置: 首页 > 知识库问答 >
问题:

在Java中传递给方法的数组-这里传递的是什么?价值还是参考?

公西俊民
2023-03-14

当我将对象引用(数组是对象)传递给方法时,会传递值,对吗?

在以下代码中,初始值为:333。方法传递后,值将更改。为什么?在这种情况下,引用传递的是值吗?

数组是“特例”吗?

public static void main(String[] args) {
    int[] myArray = { 333 };
    valueOrRef(myArray);            // Value or Reference?
    System.out.println(myArray[0]); // 777 (changed)
}

public static void valueOrRef(int[] myArgument) {
    myArgument[0] = 777;
}

另一种方法:(逻辑“传递值”):

public static void main(String[] args) {
    int[] myArray = { 333 };
    valueOrRef(myArray[0]);         // Value or Reference?
    System.out.println(myArray[0]); // 333 (after method still unchanged)
}

public static void valueOrRef(int myArray2) {
    myArray2 *= 2;
}

共有1个答案

宫修贤
2023-03-14

始终传递该值,但请记住,对于数组,该值实际上是对数组的引用,而不是数组本身。

第一个方法更改myArgument指向的数组的内容,这就是为什么调用该方法后会看到对数组的影响。

 类似资料:
  • 我一直认为Java使用按引用传递。 然而,我看到一篇博客文章声称Java使用传递值。 我想我不明白他们的区别。 原因是什么?

  • 问题内容: 在java中是值传递还是引用传递,有什么区别? 问题答案: Java总是按值传递参数,而不是按引用传递参数。 看下面一个实例:

  • 问题内容: 数组不是Java中的原始类型,但它们也不是对象,因此它们是按值还是按引用传递?它是否取决于数组包含的内容,例如引用或原始类型? 问题答案: 。如果是Array(只不过是Object),则数组引用按值传递。(就像对象引用按值传递)。 当你将数组传递给其他方法时,实际上是复制对该数组的引用。 通过该引用对数组内容进行的任何更改都会影响原始数组。 但是,将引用更改为指向新数组不会更改原始方法

  • 数组在Java中不是一种基元类型,但它们也不是对象,那么它们是通过值传递还是通过引用传递呢?它是否取决于数组包含什么,例如引用或基元类型?

  • 那代码在OOP方式下还是好的吗?还是我应该用接口?我认为直接通过方法是可以的。

  • 问题内容: 我一直认为Java使用传递引用。 但是,我已经看到了几篇博客文章声称不是(博客文章说Java使用值传递)。 我不认为我能理解他们的区别。 有什么解释? 问题答案: Java总是按值传递。 不幸的是,我们根本不处理任何对象,而是处理称为引用的 对象句柄(当然是通过值传递)。选择的术语和语义很容易使许多初学者感到困惑。 它是这样的: 在上面的示例中仍将返回”Max”。值aDog内main未