JAVA中的对象数组到底是怎么初始化的?是通过类的构造函数来初始化的么?看了网上很多教程都没看懂,希望大神能举个例子,给我解释说明下。谢谢了。。

解决方案 »

  1.   

    以String类的对象数组举个例子:
    // 创建长度为5的String对象数组
    // 这5个引用默认都是null,即不指向任何对象
    String[] strarr = new String[5];
    for (int i = 0; i < 5; i++)
    System.out.print(strarr[i] + " ");
    System.out.println();
    // 让这5个引用指向新创建的String对象
    for (int i = 0; i < 5; i++)
    strarr[i] = new String("str" + i);
    for (int i = 0; i < 5; i++)
    System.out.print(strarr[i] + " ");程序输出:null null null null null 
    str0 str1 str2 str3 str4 
      

  2.   

    我非大神,只是菜鸟一个,刚好路过,当创建一个对象数组的时候,比如说 String[] strs = new String[3];使用了new的关键字,不妨将数组整体看成一个对象strs,这时候类比于一个对象的方法的调用,如String str = new  String("str"),我们可以调用str.charAt(0);结果返回的是s,即第一个字母,而当我们调用str.charAt(1)和str.charAt(2)的时候返回的分别是t,r;同理,strs是一个String类型的数组对象,strs[0],stsr[1],strs[2],这样相当于str的方法的三次不同的调用,这个很正常,因为我们创建的数组长度就为3,这时候就牵扯到strs[0],stsr[1],strs[2]分别返回什么呢,很显然结果是null,因为我们在创建对象数组时只是指定了长度,而没有给赋值,既然JVM会让你调用strs[0],stsr[1],strs[2],它就必须给你一个结果,而最好的做法是根据一个规则:定义好的类在创建对象时,JVM会给该类的对象类型的成员指定一个缺省值,即初始化,而这个缺省值是一个不知向任何引用的变量null。补充一下,所有对象类型的数组的每一个下标对应的元素初始值都为null,而基本类型的数组,根据各个基本类型的不同而不同