论坛首页 Java企业应用论坛

java多维数组的创建

浏览 4076 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (17) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-26   最后修改:2009-06-16
java多维数组的创建其实也遵守数组初始化长度 ,虽然多维数组的不定长但是这个不定长也是在初始化长度后的不定长:例如
public static void main(String[] args){
  String[] strArr0={"1","2","3","4","5","6"};
  String[] strArr1={"1","2","3","4","5","6"};
  String[][] strArr2=null;

   if(strArr0!=null && strArr0.length>0){
      strArr2=new String[strArr0.length][];
     for(int i=0;i<strArr0.length;i++){
       // strArr2[i]=new String[strArr1.length];缺少这一句的话
       for(int k=0;k<strArr1.length;k++){
         strArr2[i][k]=strArr1[k];//这里肯定会出现一个null的空指针异常
         System.out.println("strArr2["+i+"]["+k+"]="+strArr2[i][k]);

       }
     }

   }
  }
正确的应该是下面

public static void main(String[] args){
  String[] strArr0={"1","2","3","4","5","6"};
  String[] strArr1={"1","2","3","4","5","6"};
  String[][] strArr2=null;

   if(strArr0!=null && strArr0.length>0){
      strArr2=new String[strArr0.length][];
     for(int i=0;i<strArr0.length;i++){
        strArr2[i]=new String[strArr1.length];//初始化长度
       for(int k=0;k<strArr1.length;k++){
         strArr2[i][k]=strArr1[k];//然后在这里为其赋值
         System.out.println("strArr2["+i+"]["+k+"]="+strArr2[i][k]);

       }
     }

   }
  }
   发表时间:2008-12-26  
这种多维数组定不定长没有太大的意义,其实就是一个Object[][]

c的多维特性可以通过 rowIdx * columnNum + columnInx 取到数据,在大量循环的时候内存寻址性能上有提高,而这种貌似就不行
0 请登录后投票
   发表时间:2008-12-31  
oxromantic 写道

这种多维数组定不定长没有太大的意义,其实就是一个Object[][]c的多维特性可以通过 rowIdx * columnNum + columnInx 取到数据,在大量循环的时候内存寻址性能上有提高,而这种貌似就不行

你说的对。当然C和java两个是有区别的。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics