为啥数组在通过其他更改数组的方法时打印不同? [复制]

Posted

技术标签:

【中文标题】为啥数组在通过其他更改数组的方法时打印不同? [复制]【英文标题】:Why is array printed differently when it goes through other method that changes the array? [duplicate]为什么数组在通过其他更改数组的方法时打印不同? [复制] 【发布时间】:2020-02-12 19:15:57 【问题描述】:

你想得到的结果是 0,但我不明白为什么?数组在通过其他方法时发生变化。

public class Tester 
  public static int function1 (int [] arr) 
    arr= function2(arr);
    return arr[0];
  
  public static int[] function2 (int [] arr) 
    arr = new int[4];
    return arr;
  
    public static void main(String[] args) 
      int arr[] = 1,2,3,4;
      System.out.print(Tester.function1(arr));
    

我希望打印出来的答案是 4。

【问题讨论】:

为什么要打印 4? @Guy 除非您了解它为什么适用于此,否则一般答案并不适用。 【参考方案1】:

您正在 function2 中创建一个全新的数组。这就是为什么默认情况下它在每个索引处存储 0 的原因。当您返回时,新数组仅返回。对于每个索引,它只会打印 0。 为什么要在函数 2 中创建新数组?如果您必须打印 4,则只需传递现有数组并打印 arr[3]

这里是代码:-

public class Tester 
  public static int function1 (int [] arr) 
    arr= function2(arr);
    //return arr[0];
    return arr[3];
  
  public static int[] function2 (int [] arr) 
    //arr = new int[4];
    return arr;
  
    public static void main(String[] args) 
      int arr[] = 1,2,3,4;
      System.out.print(Tester.function1(arr));
    

【讨论】:

以上是关于为啥数组在通过其他更改数组的方法时打印不同? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Arrays.toString() 会给出与手动打印数组不同的输出? [关闭]

为啥数组打印在一个文件中,但发送到另一个文件时缺少数字

为啥传递的数组不带ref,在方法内部被CopyTo更改?

表视图复选标记

为啥“loadNibNamed”方法返回数组?

当数组(句子)只有 30 个空间时,为啥要打印 38 个元素?