第六周学习笔记DAY.2

public class Demo03 {

    //Arrays类操作数组元素
    public static void main(String[] args) {

        int[] nums = {56,36,78,12,95,40,33};
        System.out.println("数组排序前:");
//        for(int a : nums){
//            System.out.print(a+" ");
//        }
//        System.out.println();
        System.out.println(Arrays.toString(nums));

        //对数组进行升序排序,可以写冒泡排序代码,也可以直接使用Arrays类中的sort()方法进行排序
        //Arrays.sort(数组名);
        Arrays.sort(nums);
        System.out.println("数组排序后:");
//        for(int a : nums){
//            System.out.print(a+" ");
//        }
//        System.out.println();
        System.out.println(Arrays.toString(nums));

        System.out.println("--------------------------------------------------------------");

        int[] nums1 = {11,22,33,44,55};
        int[] nums2 = {11,22,33,55,44};

        //比较两个数组是否相同
        //boolean Arrays.equals(数组名1,数组名2); 如果两个数组中的元素个数,对应下标上的元素值相同,返回true,否则返回false
        boolean result =Arrays.equals(nums1,nums2);
        System.out.println("两个数组相同:"+result);

        System.out.println("--------------------------------------------------------------");

        int[] nums3 = {11,56,99,88,43,61,25};
        //将数组转换为字符串
        //String Arrays.toString(数组名);
//        String string =Arrays.toString(nums3);
//        System.out.println(string);
        System.out.println(Arrays.toString(nums3));



    }
}

Arrays类操作数组元素

升序排序

对数组进行升序排序,可以写冒泡排序代码,也可以直接使用Arrays类中的sort()方法进行排序
Arrays.sort(数组名);

比较数组是否相同

比较两个数组是否相同
boolean Arrays.equals(数组名1,数组名2); 如果两个数组中的元素个数,对应下标上的元素值相同,返回true,否则返回false

将数组转化为字符串输出

将数组转换为字符串
String Arrays.toString(数组名);
String string =Arrays.toString(nums3);
System.out.println(string);

将指定值分配到数组指定位置


static void fill(int[] a, int val):将指定的 int 值分配给指定 int 型数组的每个元素。
Arrays.fill(nums1,666);
System.out.println(Arrays.toString(nums1));


static void fill(int[] a, int fromIndex, int toIndex, int val):将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。注意:包含fromIndex的元素,不包含toIndex的元素
Arrays.fill(nums2,2,5,99);
System.out.println(Arrays.toString(nums2));

复制数组

复制数组
int[] nums = {11,22,33,44,55,66,77,88,99,100};
System.out.println(Arrays.toString(nums));

static int[] copyOf(int[] original, int newLength) : 复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。
复制数组的长度比原来数组长度小

int[] newNums1 =Arrays.copyOf(nums,3);
System.out.println(Arrays.toString(newNums1));


复制数组的长度与原来数组长度相同
int[] newNums2 =Arrays.copyOf(nums,10);
System.out.println(Arrays.toString(newNums2));


复制数组的长度比原来数组长度大
int[] newNums3 =Arrays.copyOf(nums,15);
System.out.println(Arrays.toString(newNums3));



static int[] copyOfRange(int[] original, int from, int to) :将指定数组的指定范围复制到一个新数组。注意:包含开始下标的元素值,不包含结束下标的元素值
int[] newNums4 =Arrays.copyOfRange(nums,2,5);
System.out.println(Arrays.toString(newNums4));


注意:复制数组的时候,开始索引值不能超过数组下标的范围值,结束索引值可以,超过之后,复制得到的新的数组剩余元素用默认值替代
int[] newNums5 =Arrays.copyOfRange(nums,2,15);
System.out.println(Arrays.toString(newNums5));


除了上面的Arrays类中的copyOf()方法和copyOfRange()方法可以复制数组,System类中也有一个方法可以复制数组
/*
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
*/

int[] a = {10,20,30,40,50,60,70,80,90};
int[] b = new int[10];
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));


System.arraycopy(a,1,b,4,3);

System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
}

查找数组中的元素



int[] nums = {15,66,23,66,78,91,66,45,33,20,80,41,55};
System.out.println(Arrays.toString(nums));

static int binarySearch(int[] a, int key):使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
使用Arrays类中查找数组元素的方法之前,要对数组进行排序,否则不能保证查找结果的正确性
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));

int index1 =Arrays.binarySearch(nums,91);
System.out.println("你要查找的元素91在数组中的下标:"+index1);
int index2 =Arrays.binarySearch(nums,66);
System.out.println("你要查找的元素66在数组中的下标:"+index2);
如果要查找的元素在数组中不存在,返回一个负值
int index3 =Arrays.binarySearch(nums,666);
System.out.println("你要查找的元素666在数组中的下标:"+index3);


在指定的下标范围区间查找元素,如果有元素,返回其下标值,否则返回一个负值
static int binarySearch(int[] a, int fromIndex, int toIndex, int key):使用二分搜索法来搜索指定的 int 型数组的范围,以获得指定的值。注意:查找范围包含开始下标元素,不包括结束下标元素值
int index4 =Arrays.binarySearch(nums,1,7,66);
System.out.println("你要查找的元素66在下标为1~7的范围内的位置是:"+index4);//得到的结果是一个负值

int index5 =Arrays.binarySearch(nums,1,8,66);
System.out.println("你要查找的元素66在下标为1~8的范围内的位置是:"+index5);//7

  • 29
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值