java二维数组

    

Java        二维数组总结

1,二分查找法

 java二维数组

int mid=(low+high)/2;这种方法可能会使int 定义的越界

所以我们将它写成int mid=(low+high)>>>1

">>>" 最高位补0,所以叫无符号右移

无符号右移相当于除法

2,创建二维数组

 java二维数组

 java二维数组

--------------------------------

java二维数组

java二维数组

 


所以改变array2[0][0]才会改变array[0][0],因为是动了一个内存地址里的东西

3,二维数组的遍历

 java二维数组

二维数组中array是指指向array[0],array[1]的引用变量。array[0],array[0]...才是指向二维数组中元素的引用变量。

4,二维数组的四种拷贝方式

1for循环

基本类型

 java二维数组

 java二维数组

这个时候改变array2[0][0]并不会改变array[0][0]因为这次的拷贝是直接把array数组里面的元素内容拷贝给了array2数组里面的元素

引用类型

 java二维数组

引用类型数组元素里面也是一个引用变量,它拷贝时将这个引用变量拷贝到另外一个数组中,所以第二个数组里面的引用变量和第一个数组里面的引用变量指向的是同一个地址。所以改变第二个的值也会相应的改变第一个的值

 java二维数组

 

 

2clone拷贝

 java二维数组

 java二维数组

 

 java二维数组

 java二维数组

 

因为clone这个方法是会重新创建一个对象的,后面的具体的也就和for循环的拷贝时一样的了

 

3,system.arraycopy()

 java二维数组

 java二维数组

原理与for循环拷贝一样

4,Arrays.copyOf()

 java二维数组

 java二维数组

 

原理与clone一样

 实际上是新创建了一个对象

       public static int[] copyOf(int[] original, int newLength) {

        int[] copy = new int[newLength];

        System.arraycopy(original, 0, copy, 0,

                         Math.min(original.length, newLength));

        return copy;

       }

5,可变参数编程

 java二维数组

可变参数就相当于传入了一个匿名数组