System和Arrays类常用方法

本文详细介绍了Java中数组操作的方法,包括数组复制、排序、填充及查找等核心功能。重点讲解了System类中的arraycopy方法实现原理及其注意事项,并对Arrays类中的sort、binarySearch和fill方法进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

System.java

public static native void arraycopy(Object src,  int  srcPos, Object dest, int destPos, int length);
/**
Copies an array from the specified source array, beginning at the specified position, to the specified position of 
the destination array. A subsequence of array components are copied from the source array referenced by src to 
the destination array referenced by dest. The number of components copied is equal to the length argument. 
The components at positions srcPos through srcPos+length-1 in the source array 
are copied into positions destPos through destPos+length-1, respectively, of the destination array.
将源数组src的下标为srcPos开始的length个元素,移到目标数组dest的下标destPos位置
 */

注意:把数组src的元素复制到数组dest,这里是浅复制,不是深复制,即只是数组src元素的对象引用复制到数组dest。


Arrays.java

public static void sort(int[] a, int fromIndex, int toIndex)
/**
* short,char,byte,double,float,long
*/


public static void sort(Object[] a, int fromIndex, int toIndex)
/**
* short,char,byte,int,double,float,long
*/


public static int binarySearch(int[] a, int fromIndex, int toIndex, int key)
/**
* short,char,byte,double,float,long
*/


public static void fill(Object[] a, int fromIndex, int toIndex, Object val)

public static void fill(Object[] a, int fromIndex, int toIndex, Object val) {
        rangeCheck(a.length, fromIndex, toIndex);
        for (int i=fromIndex; i<toIndex; i++)
            a[i] = val;
    }
注意:调用此方法,则数组a里的每个元素值都是val,如果val不是基本类型,而是对象类型,那么数组a的元素初始化值是对象val的引用,或换种说法,数组元素指向的都是同一个对象,一旦改变某个数组对象的属性,则数组其他元素也会改变,因为数组里的元素保存都是同一个对象引用。


public static int[] copyOfRange(int[] original, int from, int to)
/**
* short,char,byte,double,float,long
*/


Arrays中提供了很多常用方法,下面列举一些比较常用的: 1. sort()方法:用于对数组进行排序,默认是升序排序,也可以传入一个Comparator对象以实现自定义排序。 2. binarySearch()方法:用于在已排序的数组中查找指定元素,如果找到了返回该元素的索引值,否则返回负数。 3. equals()方法:用于比较两个数组是否相等。 4. fill()方法:用于将数组中的所有元素都赋成同一个值。 5. copyOf()方法:用于复制一个数组,可以指定复制的长度,如果原数组长度不够,则用默认值补齐。 6. asList()方法:将数组转换为一个List对象。 7. toString()方法:将数组转换为一个字符串,方便输出打印。 示例代码如下: ```java int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3}; //排序 Arrays.sort(arr); System.out.println(Arrays.toString(arr)); //[1, 1, 2, 3, 3, 4, 5, 5, 6, 9] //查找 int index = Arrays.binarySearch(arr, 6); System.out.println("6的索引值为:" + index); //输出:6的索引值为:8 //比较 int[] arr1 = {1, 2, 3}; int[] arr2 = {1, 2, 3}; boolean isEqual = Arrays.equals(arr1, arr2); System.out.println("arr1arr2是否相等:" + isEqual); //输出:arr1arr2是否相等:true //赋值 Arrays.fill(arr, 0); System.out.println(Arrays.toString(arr)); //[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] //复制 int[] arr3 = Arrays.copyOf(arr, 5); System.out.println(Arrays.toString(arr3)); //[0, 0, 0, 0, 0] //转换为List List<int[]> list = Arrays.asList(arr); System.out.println(list.size()); //输出:1 //转换为字符串 String str = Arrays.toString(arr); System.out.println(str); //[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值