Java数组与C/C++数组的区别

C数组
一维数组:数组

定义方式:
datatype arrayname[length]
数组是一个总体,在内存中是连续的;spa

初始化:
1:能够只给部分赋值
int a[5] = {1,2}; 剩下的自动赋值为0
2:若是给所有元素赋值,那么在数组定义时能够不给出数组长度
int a[] = {1,2,3,4};3d

二维数组:
在内存中是连续排列的,按行排列。对象

初始化:
1:按行分段赋值
int a[2][2] = {{1,2},{3,4}};
2:按行连续赋值
int a[2][2]= {1,2,3,4};
3:能够只对部分赋值,未赋值的自动取0
int a[3][3] = {{1}, {2}, {3}};
4),如对所有元素赋初值,则行数能够不给出,但列必须给出
int arr[][3] = {1,2,3,4,5,6,7,8,9};blog

Java数组:
必须规定数组的长度,且数组长度终生不变
数组必须先初始化才可使用,初始化的时候会分配内存;动态初始化和静态初始化不能同时存在。内存

一维数组:编译

动态初始化:
只指定数组的长度,具体数据不指定
数据类型[] 数组名 = new 数据类型[数组长度];
int sy[] = new int[10];
静态初始化:
定义数组时,直接指定各个元素的值,由元素的个数决定数组的长度。
数据类型[] 数组名 = new 数据类型[]{1,2,3,4};
int[ ] a = {1,2,3,4,5};
注意:在Java程序中声明数组时,不管用何种方式定义数组,都不能指定其长度。如以“int a[5];”方式定义数组将是非法的,该语句在编译时将出错。
二维数组:
特色是在堆内存中,各个一维数组的元素是连续的,但各个一维数组之间不是连续存放的。
动态初始化:变量

数据类型 [ ][ ] 数组名 = new 数据类型[行数][列数];
int [ ][ ] a = new int [3][4];
虽然在应用上很像C语言中的多维数组,但仍是有区别的,在C语言中定义一个二维数组,必须是一个m*n二维矩阵块,如图1所示。Java语言的多维数组不必定是规则的矩阵形式,如图2所示。循环

图1.C语言中二维数组必须是矩形数据类型

图2.Java语言的二维数组不必定是矩形
如,定义以下的数组:
int [ ][ ] x;
它表示定义了一个数组引用变量x,第一个元素为x[0],第n个元素变量为x[n-1]。x中从x[0]到x[n-1]的每一个元素变量正好又是一个整数类型的数组引用变量。须要注意的是,这里只是要求每一个元素都是一个数组引用变量,并无要求它们所引用数组的长度是多少,也就是每一个引用数组的长度能够不同。如:
int [ ][ ] x;
x = new int [3][ ];
Java 这两句代码表示数组x有三个元素,每一个元素都是int[ ]类型的一维数组。至关于定义了三个数组引用变量,分别是int[ ] x[0]、int[ ] x[1]和int[ ] x[2],彻底能够把x[0],x[1]和x[2]当成普通变量名来理解。
因为x[0]、x[1]和x[2]都是数组引用变量,必须对它们赋值,指向真正的数组对象,才能够引用这些数组中的元素。如
x[0] =new int[3];
x[1] =new int[2];
由此能够看出,x[0]和x[1]的长度能够是不同的,数组对象中也能够只有一个元素。
程序运行到这以后的内存分配状况如图3所示。

图3 Java中的二维数组能够当作是多个一维数组
注意:二维数组要求必须指定高层维数,举例说明:
正确的申请方式:只指定数组的高层维数,如:
int [ ][ ] smily = new int[9][ ];
正确的申请方式:指定数组的高层维数和低层维数,如:
int [ ][ ] smily = new int[9][5 ];
若是想直接在声明二维数组时就给数组赋初值,能够利用大括号实现,只要在数组的声明格式后面再加上初值的赋值便可。其格式以下:
数据类型 [ ] [ ]数组名={ {第1行初值},
{第2行初值},
{ … },
{第n+1行初值} };
一样须要注意的是,用户并不须要定义数组的长度,所以在数据类型后面里并没必要填写任何的内容。此外,在大括号内还有几组大括号,每组大括号内的初值会依次赋值给数组的第一、2.……n+1行元素。如:
int [ ] [ ] a = { {11,22,33,44}, //二维数组的初始赋值
{66,77,88, 99} };
该语句中声明了一个整型数组a,该数组有2行4列共8个元素,大括号里的两组初值会分别依次指定给各行里的元素存放,a[0][0]为11,a[0][1]为22, …a[1][3]为99.
注意:与一维数组同样,在声明多维数组并初始化时不能指定其长度,不然出错。
如"int [2[3] b={ {1,2,3},{4,5,6} };",该语句在编译时将出错。
三维以上的多维数组
经过对二维数组的介绍,不难发现,要想提升数组的维数,只要在声明数组的时候将下标与中括号再加一组便可,因此三维数组的声明为"int[ ] [ ] [ ] a;",而四维数组为"int[ ] [ ] [ ] [ ] a;".以此类推.
使用多维数组时,输入、输出的方式和1、二维数组相同,可是每多一维,嵌套循环的层数就必须多一层,因此维数越高的数组其复杂度也就越高。

不要被本身感动。没用
只有你足够不同凡响,你才能足够被须要。
自觉得是是人类的原罪。
加油哦!

相关文章
相关标签/搜索