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

这个问题在这里已经有了答案:

  • Java是“通过引用传递”还是“按值传递”? 78个答案

  • 该数组通过引用传递,但引用是按值传递的。 也就是说,你可以改变阵列a指,但你不能改变其阵列a指。


    Java是通过价值传递的。 这就是为什么你的代码不起作用。 一个好的做法是将int[] a标记为final ,这样会导致编译错误(请参阅相应的Checkstyle规则)。


    从函数返回参数“a”并将其分配给主函数中的testArray。 当您通过引用传递对象时,引用将被复制并提供给该函数。 所以这个对象现在被2个引用引用。 对象通过第二个引用进行的任何更改都将反映在第一个引用中,因为它们是由它们引用的同一个对象。 但是,当您更改参考(不是通过参考对象)时,这是一个不同的情况。 您已将第二个引用更改为指向另一个对象(int []结果)。 因此,通过第二个参考的任何更改都只会改变“结果”对象。

    class Test
    {
       public static void main(String[] args)
       {
    
          int[] testArray = {1,2,3};
          testArray = 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 int[] 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;
          return a;
       }
    }
    
    链接地址: http://www.djcxy.com/p/3503.html

    上一篇: java array pass by reference does not work?

    下一篇: Is Java really passing objects by value?