Java一维数组及常见操作

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

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

 

   使用冒泡排序进行排序

 

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

 

 

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

 

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

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

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

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

 

 

 

 

       

 

 

 

4,如何反转数组

 

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

 

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

7,如何合并两个数组

 

8,如何填充数组

 

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

 

10,如何排序和比较数组

 

 

11,如何删除指定元素

 

 


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

 

 binarySearch(Object[], Object key)

a: 要搜索的数组

key:要搜索的值

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

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

a:要搜索的数组

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

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

key:要搜索的值

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

 

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

 

Java数组的三种创建方法

 

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

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

 

Java数组的两种遍历方式

1,for循环

2,增强for循环- _ -

 

java数组的四种拷贝方式

 

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

 

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

 

 

 


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-->从源数组中拷多长

 

 


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

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

 

 

 


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

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

4arrays.copeOf()方法

                                              源数组                           源数组长度

 * Arrays.copeOf()public static <T> 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;

       }

    

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

 

 

 

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

  • 24
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值