Arrays类 数组的扩展

1.Arrays类

在java.util包中

- a.包含的方法

  1. Arrays.sort(数组名)给数组排序
如:Arrays.sort(nums);

意义为:给nums排序
注:给数组排序默认升序

  1. Arrays.sort(数组名,开始下标,结束下标) 给数组排序
如:   Arrays.sort(nums,3,7);

意义为:给nums的3号下标开始排序,到7下标结束,不包含7下标
注:给数组排序默认升序,从开始下标开始排序,到结束下标结束排序不包含结束下标

  1. Arrays.equals(数组名1,数组名2) 比较两个数组是否相同
System.out.println(Arrays.equals(nums1, nums2));

意义为:比较nums1和 nums2是否一样
注:返回值为boolean型

  1. toString方法

形式: Arrays.toString(数组名)

//如:       
String str=Arrays.toString(nums);
System.out.println(nums.getClass().getSimpleName());
System.out.println(str.getClass().getSimpleName());
//注:.getClass().getSimpleName()  方法是返回变量的类型
//注:上例的结果为:
int[]
String

注:返回出一个String类型的变量,对数组本身不变!!!作用是便于查看数组元素

  1. fill方法

形式: Arrays.fill(数组名,开始下标,结束下标,替换的值)
意义为:用替换的值将数组的内容替换,
替换内容从开始下标开始替换,直到结束下标结束且不包含结束下标的元素

//如:
int[] nums={3,5,7,9,2,1};
System.out.println(Arrays.toString(nums));
Arrays.fill(nums,1,4,8);
System.out.println(Arrays.toString(nums));
//结果为:
[3, 5, 7, 9, 2, 1]
[3, 8, 8, 8, 2, 1]

注:如果不写开始下标和结束下标就是用替换的值将数组内容全部替换
注:不能只写开始下标不写结束下标。

  1. copyOf方法 复制指定的数组,指定的长度。

形式: Arrays.copyOf(数组)

//如:
int[] nums={3,5,7,9,2,1};
int[] nums_bak=Arrays.copyOf(nums,3);
System.out.println(Arrays.toString(nums));
System.out.println(Arrays.toString(nums_bak));
//结果为:
[3, 5, 7, 9, 2, 1]
[3, 5, 7]

注·:复制是从0下标开始

  1. copyOfRange方法 将指定数组的指定范围复制到一个新数组。该范围的初始索引 (from) 必须位于 0 和数组.length(包括)之间。
    形式:Arrays.copyOfRange(数组,初始下标,结束下标)
//如:
int[] nums={3,5,7,9,2,1};
int[] nums_bak=Arrays.copyOfRange(nums,2,5);
System.out.println(Arrays.toString(nums));
System.out.println(Arrays.toString(nums_bak));
//结果为:
[3, 5, 7, 9, 2, 1]
[7, 9, 2]
  1. binarySearch方法 使用二分搜索法来搜索指定的 char 型数组的范围,以获得指定的值。

形式:Arrays.binarySearch(数组名,开始下标,结束下标,要搜索的值)

//如:
int[] nums={3,5,7,9,2,1};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
System.out.println(Arrays.binarySearch(nums,5));
//结果为:
[1, 2, 3, 5, 7, 9]
3

注:

  1. 如果不写开始下标和结束下标就是从0下标开始搜索
  2. 如果没有对范围进行排序,则结果是不确定的,所以要先排序!!!
  3. 如果范围包含多个带有指定值的元素,只返回遇到的第一个元素
  4. 否则返回 (-(插入点) - 1)。插入点 被定义为将键插入数组的那一点

2.多维数组

一般使用最多的是二维数组,这里是以二维数组进行模拟。
三维以及以上太过复杂不便使用。

//定义形式:  类型[][] 数组名=new 类型[行长度][列长度]
//如:         
int[][] nums=new int[3][3]

意义为:定义一个行长度为3,列长度为3的整形数组
使用形式: 数组名[下标][下标]; 返回出对应位置的元素
注:无论是几维数组的下标都是从0开始的.不能直接使用数组名,因为数组名指向的不是数据而是存储数据的地址。

简化方法:

形式:类型[][] 数组名={{元素1…},{},…}

注:长度是初始化长度

//如:   
int[][] nums={{1},{2,3}, {4}};

注: nums[0][1] 是不存在的!!!
空间抽象图形为: 下标抽象图形为:
在这里插入图片描述

注:本次定义开辟的空间如上图
注:上图只是思维上的抽象,实际在内存中无论是几维数组开辟的空间都是连续不间断的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值