重捡Java(三)数组

2020-05-04  本文已影响0人  我很惊讶

python在处理数组字典这一类的数据的时候,有两个很强大的功能——“切片和构造器”
但是在java中则更麻烦一些。

声明创建数组

Java的数组是一个固定长度的,包含了相同类型数据的容器。

int values [];  //声明。此时未分配空间
values = new int[6];  //创建,此时分配空间
values = {18,62,68,82,65,9};  //赋值
int values [] = new int[]{18,62,68,82,65,9};  //也可以写成一行

访问数组

数组通过下标访问,第一个数据的下标为0

a[0] = 1; //为数组的第一个数赋值 

可以通过循环遍历处理数组

for (int i = 0; i < a.length; i++)// length获取数组长度的方法
            System.out.println(a[i]);
}

也可以这样遍历

for(int c : a){
   System.out.println(c);// 这样就不用通过下表处理值了
}

数组排序

    public static void main(String[] args) {
        int values[] = new int[] { 18, 62, 68, 82, 65, 9 };

        // 排序
        Arrays.sort(values);
        System.out.println();
        for (int value : values) {
            System.out.print(value + " ");
        }
        // 降序
        int valuesDescp[] = new int[values.length];
        for (int i = 0; i <= values.length - 1; i++) {
            valuesDescp[i] = values[values.length - 1 - i];
            System.out.println("a:"+valuesDescp[i]);
            System.out.println("b:"+values[values.length - 1 - i]);
            
        }
        for (int value : valuesDescp) {
            System.out.print(value + " ");
        }
    }

复制数组

把一个数组的值,复制到另一个数组中

System.arraycopy(src, srcPos, dest, destPos, length)

src: 源数组
srcPos: 从源数组复制数据的起始位置
dest: 目标数组
destPos: 复制到目标数组的起始位置
length: 复制的长度
public class HelloWorld {
    public static void main(String[] args) {
        int a [] = new int[]{18,62,68,82,65,9};
         
        int b[] = new int[3];//分配了长度是3的空间,但是没有赋值
         
        //通过数组赋值把,a数组的前3位赋值到b数组
         
        //方法一: for循环
         
        for (int i = 0; i < b.length; i++) {
            b[i] = a[i];
        }
        
        //方法二: System.arraycopy(src, srcPos, dest, destPos, length)
        //src: 源数组
        //srcPos: 从源数组复制数据的起始位置
        //dest: 目标数组
        //destPos: 复制到目标数组的启始位置
        //length: 复制的长度       
        System.arraycopy(a, 0, b, 0, 3);
         
        //把内容打印出来
        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }
 
    }
}

多维数组

就是数组的元素还是数组

int[][] a = new int[][]{
{1,2},
{3,4}
}

也就是

int[0][0] = 1;
int[0][1] = 2;
int[1][0] = 3
int[1][1] = 4;

从最外层开始依次往里套娃
有二维自然也有三维四维五维

int [][][] b = new int[][][]{
{ {1,2},{3.4} }.
{ {5,6},{7,8} }
}

Arrays工具类

Arrays是针对数组的工具类,可以进行 排序,查找,复制填充等功能。
1.复制数组

// copyOfRange(int[] original, int from, int to)
        // 第一个参数表示源数组
        // 第二个参数表示开始位置(取得到)
        // 第三个参数表示结束位置(取不到)
        int[] b = Arrays.copyOfRange(a, 0, 3);

2.转换为字符串

int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
String content = Arrays.toString(a);

3.排序
刚才写了,注意,这个函数不是返回一个返回值,而是直接操作原数组

Arrays.sort(a);

4.搜索
查询元素出现的位置
需要注意的是,使用binarySearch进行查找之前,必须使用sort进行排序
如果数组中有多个相同的元素,查找结果是不确定的

System.out.println("数字 62出现的位置:"+Arrays.binarySearch(a, 62));

5.判断是否相同

System.out.println(Arrays.equals(a, b));

注意,数组是有顺序的,书序不同结果也是 false
6.填充
使用同一个值,填充整个数组

Arrays.fill(a, 5);//用5填充a

更多方法和使用方式可以按ctrl进入util.Arrays类里观看

进入工具类
可以在这个类里查询方法和使用条件
上一篇下一篇

猜你喜欢

热点阅读