如题,我们创建一维数组的时候必须指明大小,否则编译不通过。但是,标题中展示的情况为什么合法?

解决方案 »

  1.   

    public class Test {
     
    public static void main(String[] args) {
    System.out.println("he said:\" I fall in love with her! \".");
    }
    }
      

  2.   

    我个人的理解:
    这种情况可以看成一个长度为5的一维数组a,a的元素类型定义为数组对象,但是对象数组里面存的并不是对象本身,而是对象的引用,所以在创建这个长度为5的一维数组a的时候,其内部的数组元素并不需要实例化,那么也就不需要指定长度,只有在需要往a这个一维数组内部填充数组元素的时候,这个时候填充进去的数组才是需要实例化的,需要指定长度的。从这点分析,填充进去的数组的长度其实并不是唯一的,因为不管填进去的数组的长度是多少,终归他们都是数组类型,并不违反java语法。
    综上,声明一个二维数组,只需要指定第一个长度就可以了。
      

  3.   

    很简单定义二维数组的声明没办法给每一行初始化一个列数咯。但是你可以轻易地初始化需要多少行。当需要声明每一行列数的时候,你需要 a[0] = new char[element_num];
    或者 a[0] = {'a', 'b', 'c'}