Java一维数组及常见操作

1,如何排序数组并搜索某个元素,找到返回下标

   调用java中的Arrays.sort()方法进行排序

 Java一维数组及常见操作_第1张图片

   使用冒泡排序进行排序

 Java一维数组及常见操作_第2张图片

2,如何排序数组并插入某个元素

 Java一维数组及常见操作_第3张图片

 

3,如何确定二维数组的上限

 Java一维数组及常见操作_第4张图片

所以,可以通过第三个输出语句来确定二维数组的上限

a.length 是代表二维数组的行数

a[0].length是代表二维数组的列数

a代表的是整个二维数组的首地址

 

 

 

 

       

 

 

 

4,如何反转数组

 Java一维数组及常见操作_第5张图片

5. 如何将字符串数组写入输出到控制台

 

Java一维数组及常见操作_第6张图片

6,如何搜索数组里的最大值和最小值

Java一维数组及常见操作_第7张图片

7,如何合并两个数组

 Java一维数组及常见操作_第8张图片

8,如何填充数组

 Java一维数组及常见操作_第9张图片

9,初始化后如何扩展数组

 Java一维数组及常见操作_第10张图片

10,如何排序和比较数组

 Java一维数组及常见操作_第11张图片

 Java一维数组及常见操作_第12张图片

11,如何删除指定元素

 

 Java一维数组及常见操作_第13张图片


12,如何从数组中查找常见元素

 Java一维数组及常见操作_第14张图片

 binarySearch(Object[], Object key)

a: 要搜索的数组

key:要搜索的值

如果key在数组中,则返回搜索值的索引;否则返回-1“-”(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素的索引。

 binarySearch(Object[], int fromIndex, int toIndex, Object key)

a:要搜索的数组

fromIndex:指定范围的开始处索引(包含)

toIndex:指定范围的结束处索引(不包含)

key:要搜索的值

如果要搜索的元素key在指定的范围内,则返回搜索值的索引;否则返回-1“-”(插入点)。

 Java一维数组及常见操作_第15张图片

这个方法在原码中是用二分搜索实现的。

 

Java数组的三种创建方法

 

Java中声明数组时不能指定其长度(ps : int[5] array,这是因为数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量,这个引用变量还未指向任何有效的内存,所以声明数组时不能指定数组的长度。

java在创建数组时,给其分配了内存空间,并且赋初始值。即使这个内存空间存储的内容是空,这个空也是一个值null。也就是说不可能只分配内容空间而不赋初始值,即使自己在创建数组对象(分配内容空间)时没有指定初始值,系统也会自动为其分配

 

Java数组的两种遍历方式

1,for循环

2,增强for循环- _ -

 Java一维数组及常见操作_第16张图片

java数组的四种拷贝方式

 Java一维数组及常见操作_第17张图片

这种方法并不是数组拷贝,它只是让array2这个引用变量指向了array数组的首地址。

 Java一维数组及常见操作_第18张图片

1,for循环进行拷贝       基本类型深拷贝,引用类型浅拷贝

Java一维数组及常见操作_第19张图片

 Java一维数组及常见操作_第20张图片

 

 Java一维数组及常见操作_第21张图片

Java一维数组及常见操作_第22张图片

2System.arraycopy       基本类型深拷贝,引用类型浅拷贝              

 public static native void arraycopy(Object src,  int  srcPos,

                                        Object dest, int destPos,

                                        int length);

           native ---->用c,c++写的    拷贝的较快

           src-->源数组

           srcpos-->开始拷贝的位置

           dest-->拷贝到的目标数组

           destpos-->拷贝到目标数组的位置

           length-->从源数组中拷多长

 

 Java一维数组及常见操作_第23张图片

Java一维数组及常见操作_第24张图片

由打印结果来看,System.arraycopy()方法也和for循环的拷贝方式一样,都只是将数组里面的内容复制到另外一个数组里。所以基本类型中改变第二个数组的值后不会更改第一个数组里面的值。引用类型因为传过来的是地址,所以改变第二个数组里面的,也会将第一个里面的也改变。

3clone拷贝方式...   基本类型深拷贝,引用类型浅拷贝   

 

 Java一维数组及常见操作_第25张图片

 Java一维数组及常见操作_第26张图片

Java一维数组及常见操作_第27张图片

Clone()这个拷贝方法和其他不一样的是,它会在拷贝的时候重新创建一个对象,把之前数组的内容拷贝到这个新对象里面。再让第二个数组引用指向这个它新创建的对象。

拷贝时将数组里面的内容复制到另外一个数组里。所以基本类型中改变第二个数组的值后不会更改第一个数组里面的值。引用类型因为传过来的是地址,所以改变第二个数组里面的,也会将第一个里面的也改变。

4arrays.copeOf()方法

                                              源数组                           源数组长度

 * Arrays.copeOf()public static T[] copyOf(T[] original, int newLength) {

        return (T[]) copyOf(original, newLength, original.getClass());

}

 

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

       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;

       }

    

                  基本类型是深拷贝,引用类型是浅拷贝

 Java一维数组及常见操作_第28张图片

 

 Java一维数组及常见操作_第29张图片

由打印结果来看,Arrays.copyOf()方法也和clone方式一样,都只是将数组里面的内容复制到另外一个数组里。所以基本类型中改变第二个数组的值后不会更改第一个数组里面的值。引用类型因为传过来的是地址,所以改变第二个数组里面的,也会将第一个里面的也改变。

你可能感兴趣的:(Java基础)