一、与C语言数组的区别
Java的数组和C语言还是很大区别的,我认为两点区别最大:
1、首先Java的数组都是引用,用C语言的角度来讲就是数组全是指针,举个例子,一维数组:
int[] a = new int[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;
int[] a;//声明
a = new int[3];//分配空间
可以看到,a指向数new出来的数组,当代码只声明不赋值的时候数组里面保存的就是NULL,不指向任何东西,当赋值以后,指向具体的数值,由此可见,数组里面存放的是引用而不是数值本身。
注意:在声明数组的时候是不能指明长度的,例如:
int a[5];
2、二维数组的区别
Java的二维数组很好理解,就是以数组为元素的数组,就是每一个一维数组的元素都是另一个一维数组,如下:
int A[][] = {{1,2},{2,3},{3,4,5}};
int B[3][2] = {{1,2},{2,3},{3,5}};//非法,声明的时候不能指明长度
int C[][];
C = new int[3][];
C[0] = new int[2];
C[1] = new int[3];
C[2] = new int[2];
//赋值省略
数组里面全都是存的引用。
二、例程
public class arg {
public static void main(String args[]) {
int a[] = new int[args.length];
for(int i=0;ia[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
private static void print(int a[]) {
for(int i=0;i
这个例子是排序,使用了选择排序的算法,当然还不是最优的,有几处可以改进的地方。
二维数组的例子;
public class dou {
public static void main(String[] args) {
String[][] s;
s = new String[3][];
s[0] = new String[2];
s[1] = new String[3];
s[2] = new String[2];
for(int i=0;i
功能就是显示现在元素的位置,Java的二维数组和C不一样,不一定得是几行几列,Java的二维数组,每一个一维的元素都是一个一维的数组,这样理解就好了。
三、数组的拷贝
1、使用java.lang.System类的静态方法
一维数组的拷贝:
String[] s =
{"Mircosoft","IBM","Sun","Oracle","Apple"};
String[] sBak = new String[6];
System.arraycopy(s,0,sBak,0,s.length);
int[][] intArray = {{1,2},{1,2,3},{3,4}};
int[][] intArrayBak = new int[3][];
System.arraycopy
(intArray,0,intArrayBak,0,intArray.length);
参数:
第1个参数:从哪个数组拷贝; 第2个参数:从第几个元素开始拷贝; 第3个参数:往哪里拷贝;
第4个参数:对于要拷贝进去的数组,从哪里元素开始写入; 第5个参数:拷贝多长。