Java传递参数

时间:2013-10-21 15:04:11

标签: java variables parameter-passing

有人可以向我详细解释为什么这段代码打印2?

import java.util.*;

public class TestCode2 {
   public static void main(String[] args) {
      int[][] array = {{1,2,3,4}, {5,6,7,8}};
      System.out.println(m1(array)[0]);
     // System.out.println(m2(array)[1]);
   }

   public static int[] m1(int[][] m) {
      int[] result = new int[2];
      result[0] = m.length;
      result[1] = m[0].length;
      return result;
   }
}

3 个答案:

答案 0 :(得分:3)

    int[][] array = {{1,2,3,4}, {5,6,7,8}};
=>  int[][] array = {arrayOne, arrayTwo};

数组的长度为2,因为它只是一个二维数组,包含2个子数组(长度均为4)。

所以

   array.length = 2;
   array[0].length = length of arrayOne (i.e: length of {1,2,3,4}) = 4
   array[1].length = length of arrayTwo (i.e: length of {5,6,7,8}) = 4

<小时/> 总结一下:

public static int[] m1(int[][] m) {
      int[] result = new int[2];
      result[0] = m.length; //m.length = 2
      result[1] = m[0].length; //m[0].length = length of {1,2,3,4} = 4
      return result; //{2,4}
   }

然后你只需打印返回的这个数组的第一个元素,即2。

答案 1 :(得分:1)

这是一个二维数组,所以: 当你喜欢这样的时候: int [] [] array = {{1,2,3,4},{5,6,7,8}} int a = array.length; \即a = 2 这是因为数组处理2个集合,因为它的元素意味着{1,2,3,4}和{5,6,7,8}被认为是单个元素 抱歉错误的格式,因为我正在使用移动

答案 2 :(得分:1)

m1()将二维数组作为i / p&amp;返回一个(1D)数组,第一个元素作为i / p数组的长度,在这种情况下是2;因此2。