黑马程序员技术交流社区

标题: 请问二维数组的定义和初始化有几种方式? [打印本页]

作者: 盛德成    时间: 2014-3-12 14:29
标题: 请问二维数组的定义和初始化有几种方式?
Int a[][] = { {3,1} ,{3,6},{9,4} };还有
Int a[][] = {2,4,5,6,2,4,9};
Int a[][] = {0};
这些都对吗?那些是错的?还有别的正确写法吗?

作者: 盛德成    时间: 2014-3-12 14:31
zengming13 发表于 2014-3-12 14:30
Int a[][] = { {3,1} ,{3,6},{9,4} };//正确
Int a[][] = {2,4,5,6,2,4,9};//错误,这是一维数组
Int a[][] ...

谢谢,还有别的写法吗?
作者: 天凌蓝    时间: 2014-3-12 14:37
int a[][] = { {3,1} ,{3,6},{9,4} };是正确,其他两个是错的
作者: 盛德成    时间: 2014-3-12 14:45
天凌蓝 发表于 2014-3-12 14:37
int a[][] = { {3,1} ,{3,6},{9,4} };是正确,其他两个是错的

谢谢,还有别的写法吗
作者: syusikoku    时间: 2014-3-12 15:00
可以这样定义:
          int[][] arr=new int[2][3];
                //先定义再赋值
                arr[0][0]=22;
                arr[0][1]=25;
                arr[0][2]=27;
                arr[1][0]=24;
                arr[1][1]=5;
                arr[1][2]=12;
               
                int[][] arr2={{122,17,13,9},{5,14,12,17}}; //定义的时候直接赋值
                //如果直接赋值就不需要指定数组的长度了
  这是常用的。
作者: 天凌蓝    时间: 2014-3-12 15:03
int a[][]=new int[3][2];
a[0][0]=3; a[0][1]=1; a[1][0]=3; ...
或者
int a[][]=new int[3][];
a[0]=new int[2];
a[1]=new int[2];
a[2]=new int[2]; 然后再去给每个分配值,比如:a[0][0]=3;
作者: 赵文超    时间: 2014-3-12 15:16
Int a[][] = { {3,1} ,{3,6},{9,4} };这个正确
还可以以下两种方式定义
1:int[][] arr = new int [3][4];
2:int[][] arr = new int [3][];
arr[0] = new int[3];
arr[1] = new int[2];
arr[2] = new int[1];

作者: 盛德成    时间: 2014-3-12 19:28
syusikoku 发表于 2014-3-12 15:00
可以这样定义:
          int[][] arr=new int[2][3];
                //先定义再赋值

恩,非常感谢
作者: 盛德成    时间: 2014-3-12 19:29
天凌蓝 发表于 2014-3-12 15:03
int a[][]=new int[3][2];
a[0][0]=3; a[0][1]=1; a[1][0]=3; ...
或者

嗯嗯,谢谢啦
作者: 盛德成    时间: 2014-3-12 19:31
赵文超 发表于 2014-3-12 15:16
Int a[][] = { {3,1} ,{3,6},{9,4} };这个正确
还可以以下两种方式定义
1:int[][] arr = new int [3][4];

看着还是第一个简单哈,谢谢啦
作者: 周定宁    时间: 2014-3-12 20:07


class numthree
{
public static void main(String[] args)
{
float[][] numthree;             //定义一个float类型的2维数组
numthree=new float[5][5];       //为它分配5行5列的空间大小
numthree[0][0]=1.1f;            //通过下标索引去访问     1行1列=1.1
numthree[1][0]=1.2f;                                  // 2行1列=1.2
numthree[2][0]=1.3f;                                  // 3行1列=1.3
numthree[3][0]=1.4f;                                  // 4行1列=1.4
numthree[4][0]=1.5f;                                  // 5行1列=1.5
System.out.println(numthree[0][0]); //打印换行输出喽
System.out.println(numthree[1][0]);
System.out.println(numthree[2][0]);
System.out.println(numthree[3][0]);
System.out.println(numthree[4][0]);
}
}

//定义二维数组写法2   定义的同时分配空间大小
class numfour
{
public static void main(String[] args)
{
   short[][] numfour=new short[5][8]; //定义一个short类型的数组同时为它分配5行8列的空间大小
   numfour[0][7]=10;
   numfour[1][6]=20;
   numfour[2][5]=30;
   numfour[3][4]=40;
   numfour[4][3]=50;
   System.out.println(numfour[0][7]);
   System.out.println(numfour[1][6]);
   System.out.println(numfour[2][5]);
   System.out.println(numfour[3][4]);
   System.out.println(numfour[4][3]);
}
}


//定义二维数组写法3        不规则数组
class numfive
{
public static void main(String[] args)
{
long[][] numfive=new long[5][];     //定义一个long类型的不规则数组
numfive[0]=new long[5];             //为第1行分配5列
numfive[1]=new long[6];             //为第2行分配6列
numfive[2]=new long[7];             //为第3行分配7列
numfive[3]=new long[8];             //为第4行分配8列
numfive[4]=new long[9];             //为第5行分配9列

numfive[0][4]=10000000000L;         //1行5列=10000000000
numfive[1][5]=20000000000L;         //2行6列=20000000000
numfive[2][6]=30000000000L;         //3行7列=30000000000
numfive[3][7]=40000000000L;         //4行8列=40000000000
numfive[4][8]=50000000000L;         //5行9列=50000000000

System.out.println(numfive[0][4]); //打印换行输出喽
System.out.println(numfive[1][5]);
System.out.println(numfive[2][6]);
System.out.println(numfive[3][7]);
System.out.println(numfive[4][8]);
System.out.println(numfive[4][7]); //打印输出一个没有定义数组元素的数组 java会自动将他初始化值为0
}
}


//定义2维数组写法4    定义的同时赋初始值
class numsix
{
public static void main(String[] args)
{
double[][] numsix={{1.111D,2.222D,3.333D},{4.444D,5.555D,6.666D}};//定义double型的数组分配3行3列的空间同时赋值
System.out.println(numsix[0][0]); //打印换行输出1行1列=1.111
System.out.println(numsix[1][1]); //打印换行输出2行2列=5.555
}
}


//定义2维数组写法5   定义不规则的2维数组同时赋初始值
class numseven
{
public static void main(String[] args)
{
int[][] numseven=new int[][]{{10,20,30},{40,50},{60}}; //没什么好说的如果你在看不懂 那就别学了!
System.out.println(numseven[0][2]);
System.out.println(numseven[1][1]);
System.out.println(numseven[0][0]);
}
}

//定义2维数组写法6 定义不规则的2维数组同时赋初始值;
class numeight
{
public static void main(String[] args)
{
int[][] numeight={{100,200,300,400},{500,600,700,800},{900,1000,1100,1200,1300}};
System.out.println(numeight[0][2]);
System.out.println(numeight[1][2]);
System.out.println(numeight[2][1]);
}
}
分享到:

作者: syusikoku    时间: 2014-3-12 20:08
呵呵。不客气
作者: 黄飞1991    时间: 2014-3-13 18:13
第一个正确,第二个和第三个错误。
  格式1int[][] arr = new int[3][2];
  
  [size=89%]l 定义了名称为arr的二维数组
  [size=89%]l 二维数组中有3个一维数组
  [size=89%]l 每一个一维数组中有2个元素
  [size=89%]l 一维数组的名称分别为arr[0], arr[1], arr[2]
  [size=89%]l 给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
  格式2int[][] arr = new int[3][];
  
  [size=89%]l 二维数组中有3个一维数组
  [size=89%]l 每个一维数组都是默认初始化值null
  [size=89%]l 可以对这个三个一维数组分别进行初始化
    arr[0] = new int[3];
    arr[1] = new int[1];
    arr[2] = new int[2];
  格式3int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
  
  l 定义一个名称为arr的二维数组
  l 二维数组中的有三个一维数组
  l 每一个一维数组中具体元素也都已初始化
  l 第一个一维数组 arr[0] = {3,8,2};
  l 第二个一维数组 arr[1] = {2,7};
  l 第三个一维数组 arr[2] = {9,0,1,6};
  l 第三个一维数组的长度表示方式:arr[2].length;
  
  
  
  注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。
  

  

  


作者: 菜小徐    时间: 2014-3-13 18:24
二维数组:
动态初始化
int[ ][ ]  arr = new int[3][2];
定义了一个二维数组,其中有3个一维数组,每一个一维数组中有2个元素
静态初始化
int[ ][ ]  arr = new int[][]{{1,2},{3,4},{5,6}};
int[ ][ ]  arr = {{1,2},{3,4},{5,6}};

Eg:
public class Demo3 {
        public static void main(String[] args) {
                int age[][] = new int[][]{{1,2},{3,4},{5,6,7}};
System.out.println(age[0].length);//2
                System.out.println(age[2].length);//3
}
}

作者: love~陌    时间: 2014-3-13 19:02
关于二维数组,这里有一个特例
int[]x,y[]
x是一维数组,y是二维数组
这个记住就可以了
作者: 艮昕辶    时间: 2014-3-13 21:52
面向对象的写法应该是int[][] a;
哈哈
作者: 盛德成    时间: 2014-3-13 23:16
黄飞1991 发表于 2014-3-13 18:13
第一个正确,第二个和第三个错误。

  [/td] [/tr]

说的很好,一看就懂了,谢谢
作者: 75100313    时间: 2014-3-14 07:53
:lol要把二维数组当做一维数组来看 只不过这个一维数组里面的元素还是数组!
作者: 战狼    时间: 2014-3-14 08:05
Int a[][] = { {3,1} ,{3,6},{9,4} };这个正确
Int a[][] = {2,4,5,6,2,4,9};可以改为 int a[][] = new int[]{{4},{2}};
Int a[][] = {0};这个可以改为int a = new int[行][列];

二维数组一个行的个数,一个是列的个数





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2