当前位置: 首页 > 面试题库 >

java数组通过引用传递不起作用?

管和志
2023-03-14
问题内容

我认为几乎所有语言(包括Java)都将数组传递给函数作为引用(可修改)。

但由于某种原因,它在这里不起作用,并且大小testArray仍为1,2,33

奇怪的是,如果我更改result[i] = 2a[1] =2它的话。它确实通过了引用。

此代码有什么问题?

最后,我有了a = result;(更新a)。结果是否从堆栈中删除。这就是为什么我仍然要恢复原著a吗?

我很迷惑。

谢谢!

class Test
{
   public static void main(String[] args)
   {

      int[] testArray = {1,2,3};
      equalize(testArray, 6);

      System.out.println("test Array size :" + testArray.length);
      for(int i = 0; i < testArray.length; i++)
         System.out.println(testArray[i]);
   }

   public static void equalize(int[] a, int biggerSize)
   {
      if(a.length > biggerSize)
         throw new Error("Array size bigger than biggerSize");

      int[] result = new int[biggerSize];
     // System.arraycopy(a, 0, result, 0, a.length);
     // int array default value should be 0
      for(int i = 0; i < biggerSize; i++)
         result[i] = 2;

      a = result;
   }
}

问题答案:

数组通过引用传递,但引用通过value传递。也就是说,您可以更改所a引用的数组,但是不能更改所a引用的数组。



 类似资料:
  • 问题内容: 我想将我的Swift传递 给引用(这样,当我向添加聊天时,仍指向)。即,当更改长度时,我不希望Swift将两个数组分开。 问题答案: Swift中的结构按值传递,但是您可以使用修饰符来修改数组(请参见下面的答案)。类通过引用传递。和在Swift中实现为结构。

  • 问题内容: 这两个代码有什么区别: 代码A: 哪里 VS. 代码B: 这两个代码之间有什么区别吗? 问题答案: Java始终按值传递参数,而不按引用传递参数。 让我通过一个例子解释一下: 我将逐步解释这一点: 声明一个名为ftype 的引用,Foo并将其分配给Foo具有属性的type的新对象”f”。 从方法方面,声明Foo具有名称的类型引用,a并将其初始分配给null。 调用方法时changeRe

  • 我在做一个leetcode问题(https://leetcode.com/problems/reverse-string/)当一个数组被传递给一个方法时,该方法通过将数组指向一个新创建的数组来改变数组。但我发现调用函数中的数组保持不变?在java中数组是通过引用传递的,所以情况不应该是这样吗? 输出:

  • 问题内容: 我遇到了这样一个事实,数组在多个位置通过引用传递,但是然后当我执行以下代码时,为什么和的行为之间有区别 我正在使用python 2.7和numpy版本1.6.1 问题答案: 在Python中,所有变量名都是对values的引用。 当Python评估分配时,右侧的评估先于左侧。创建一个新数组;它不会就地修改。 使局部变量引用此新数组。它不会修改传递给的原始引用的值。变量名称仅绑定到新数组

  • 问题内容: 是否可以通过Java通过引用传递对象 就像在C#中一样 问题答案: 不,这在Java中是不可能的。 在Java中,方法的所有参数均按值传递。注意非原始型的的变量,它们是对对象的引用,也由值来传递:在这种情况下, 参考 是 由值来传递 。请注意,按值传递引用与按引用传递不同。

  • 问题内容: 我尝试发射 可以通过触发参数化的构建来工作,但是问题是没有值传递给构建(即使在作业中设置了令牌,这也很奇怪,我可以在没有它的情况下触发作业)。在jenkins中,该作业具有配置的字符串“ PARAMETER”,带有或不带有某些默认值,但绝不会传递curl启动中的参数。我可能会缺少什么? 问题答案: 我正在使用: 在这里,它就像一种魅力。 注意您粘贴的URL中“ PARAMETER”前面