数组的基本用法

数组的基本用法

一、什么是数组

数组本质上是让程序员能够批量创建一组相同类型的变量
如果涉及到的数据很多,一个一个创建变量是很麻烦的,那通过数组就可以一次批量创建出一大堆变量

二、创建数组

创建数组的三种方式:

               //创建数组
        //数组的元素通过{}来指定
        int[] arr = new int[]{1, 2, 3, 4};
        //数组元素通过{}来指定
        int[] arr2 = {1, 2, 3, 4};
        //数组中的每个元素都被初始化成了 0
        //主要wield指定数组的长度
        int[] arr3 = new int[4];
        //网络编程中非常常见
        byte[] buffer = new byte[1024];
        //这种形式是错误的,方括号中的数字与大括号不能同时出现
        //int[] arr4 = new int[4]{1, 2, 3, 4};

三、数组使用

1、获取数组长度

Java通过 .length 方式获取到数组长度,一旦数组创建好了之后,length就是固定的,没办法再进行修改

//      //用 length 属性获取数组长度
        System.out.println(arr.length);

2、获取数组元素

使用下标访问数组元素时不能超出有效范围,如果超出范围,再Java语言中会抛出一个数组下标越界异常

//      //用数组下标获取数组元素,下标从 0 开始算
        System.out.println(arr[1]);

3、对数组元素进行遍历

.length 获取的是数组氧元素的个数,而数组下标是从 0 开始的,因此数组最后一个元素的下标应该是length - 1

        //遍历数组
        //按照一定的顺序将数组中的每一个元素都访问一遍,保证不重复也不遗漏
        int[] arr = {1, 2, 3, 4};
        for(int i = 0; i < arr.length; i++){
            System.out.println(arr[i]);
        }

        //for each
        //x 依次代表 arr 中的每一个元素
        for(int x : arr){
            System.out.println(x);
        }

四、数组作为方法的参数

基本用法

1、数组作为方法的参数

在这里插入图片描述
数组传参相当于“赋值”,赋值的时候并不是把原来的数组拷贝了一份新数组,而是在原有数组的基础上起了一个别名,没有新创建一个数组。但是内置类型在进行 = 的时候不是起别名,而是创建了个新的对象。

//      //数组传参就相当于“赋值”
        int[] a = arr;

在这里插入图片描述

2、数组作为方法的返回值
    //写一个方法,把数组中的每一个元素都 * 2
    //这种方法把原有的数组破坏了
//    private static void transform(int[] arr) {
//       for(int i = 0; i < arr.length; i++){
//           arr[i] *= 2;
//       }
//    }
    public static int[] transform(int[] arr){
        int[] result = new int[arr.length];
        for(int i = 0; i < arr.length; i++){
            result[i] = 2 * arr[i];
        }
        return result;//返回值是一个数组
    }
3、数组转字符串
    //约定打印成[1, 2, 3, 4]这样的格式
    private static String arrayToString(int[] arr) {
        String result = "[";
//        for(int x: arr){
//            result += (x + ", ");
//        }
        for(int i = 0; i < arr.length; i++){
            result += arr[i];
            if(i != arr.length - 1){
                result += ", ";
            }
        }
        result += "]";
        return result;
    }

也可以直接用Java库中的方法直接转成字符串的格式
Arrays.ToString()方法可以将数组转成字符串

        System.out.println(Arrays.toString(arr));
4、数组拷贝

需要创建一个新的数组,将需要拷贝的数组的元素都复制粘贴到新的数组中

    public static int[] copyOf(int[] arr) {
        int[] newArr = new int[arr.length];
        for(int i = 0; i < arr.length; i++){
            newArr[i] = arr[i];
        }
        return newArr;
    }

也可以直接使用标准库中的copyOf进行数组拷贝

        int[] result = Arrays.copyOf(arr, arr.length);

标准库中的 copyOf 允许新的数组和旧的数组长度不一样
新的数组长度如果更短,就相当于“截断”
新的数组长度如果更长,多出来的部分,会自动填充成 0

5、查找数组中的指定元素

1)给定下标查找值
2)给定值查找下标

 public static int search(int[] arr, int toSearch) {
        //依次遍历访问元素
        for(int i = 0; i < arr.length; i++){
            if(arr[i] == toSearch){
                return i;
            }
        }
        return -1;
    }

针对有序的数组可以使用 二分查找(折半查找)

6、冒泡排序

在这里插入图片描述
在这里插入图片描述

public static void bubbleSort(int[] arr) {
        //从后往前遍历
        //外层循环控制遍历的趟数
        //已排序区间: [0, bound]
        //待排序区间:[bound, length)
        for(int bound = 0; bound < arr.length; bound++) {
            //里层循环控制比较交换
            for(int cur = arr.length -1; cur > bound; cur--) {
                if(arr[cur - 1] > arr[cur]) {
                    //不符合排序要求就交换
                    int tmp = arr[cur - 1];
                    arr[cur - 1] = arr[cur];
                    arr[cur] = tmp;
                }
            }
        }

标准库中的Arrays.sort也可以对数组进行排序,使用的是快速排序的方法

五、二维数组

二维数组本质上仍然是一个一维数组,每个元素是一个一维数组
C语言中的二维数组要求每一行的列数相同,Java语言中不要求每一行的列数相同
二维数组的创建
二维数组元素的下标也是从 0 开始的

//二维数组
        int[][] arr = {
                {1, 2, 3},
                {4, 5, 6, 7},
                {8, 9}
        };

Java中也有三维数组,四维数组
三维数组本质上也是一个一维数组,每个元素又是一个二维数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值