简单记录下JAVA数组定义与初始化的方法,跟C++还是有很大区别的。
下面是一维数组的定义方法:
public static void main(String[] args) {int [] ids;//声明//1.1静态初始化ids = new int[]{1,2,3,4};int arr[] = {1,2,3,4};//1.2动态初始化String[] names = new String[5];names[0] = "张三";names[1] = "李四";names[2] = "王五";//调用数组长度for(int i = 0;i < names.length;i++){if(names[i] == null)break;System.out.println(names[i]);}}
一般来说 标准定义为:
int[] arr;
但是你也可以写成:
int arr[];
还有这里的数组与C++有很大区别,这里数组就是一个类,所以你创建数组时只是创建了一个数组变量,它里面还没东西,必须声明数组长度即:
arr = new int [107];//也就是说数组长度是不可变的
注意:如下代码!
int[] arr = new int[]{1,3,4,5}
int[] arr1 ;
arr1 = arr;
arr1[1] = 100;
此时的arr[1]就等于100了。
因为JAVA里的数组变量是一个指针(一般局部变量在栈里),然后指向堆里的一块连续的空间。所以改变arr1指向空间的值,就相当于改变arr指向空间的值(因为他们指向的位置相同!!)
下面是二维数组的初始化。
public static void main(String[] args) {System.out.println("game start!");//二维数组静态初始化int[][] arr = new int [][]{
{1,2,3},{4,5},{6}};int arr1 [][] = {
{1,2,3},{4,5},{6}};//数组之间的赋值int[][] arr7 = new int [3][];arr7[0] = arr[0];for(int i = 0;i < arr7[0].length; i++ ){System.out.println("数组赋值测试 - :" + arr7[0][i]);}//二维数组的长度获取System.out.println("arr.length : " + arr.length);for(int i = 0; i < arr.length; i++)System.out.println("arr[" + i + "].length : " + arr[i].length);//二维数组的遍历for(int i = 0; i < arr.length; i++){for(int j = 0; j < arr[i].length; j++)System.out.print(arr[i][j] + " ");System.out.println();}//二维数组动态初始化int arr2[][] = new int [3][2];int arr3[][] = new int [3][];System.out.println("arr2.length : " + arr2.length);System.out.println("arr2[0].length : " + arr2[0].length);//二维数组第二维新建对象arr3[0] = new int[4]; System.out.println("arr3.length : " + arr3.length);System.out.println("arr3[0].length : " + arr3[0].length);String[][] arr4 = new String[3][2];String[][] arr5 = new String[3][];//二维数组的初始化元素int arr6[][] = new int [3][4];System.out.println(arr6);//[[I@15db9742System.out.println(arr6[0]);//[I@15db9742System.out.println(arr6[0][0]);}
有趣的是:你可以这样定义二维数组:int[] arr[];
类(结构体)数组定义与上述int数组定义相同。