我认为几乎所有语言(包括Java)都将数组传递给函数作为引用(可修改)。
但由于某种原因,它在这里不起作用,并且大小testArray
仍为1,2,33
。
奇怪的是,如果我更改result[i] = 2
为a[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;
}
}
问题内容: 我想将我的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”前面