Java学习第五天

数组

数组用于存储相同类型的一组数据,它是一种数据结构,也是java中的一种类型。

  • 一个数组有多个数据(元素)

  • 一个数组里面的元素都是相同类型

  • 数组中的元素用序号(下标,从0开始)来访问

  • 数组一旦初始化后,长度不能改变

定义数组

定义数组跟变量定义类似,变量类型后加【】

  • 只定义数组,没有分配内存空间

  • 没有长度

注:数组可以按 int arr[]; 定义,不推荐

        int[] arrInt;   //定义数组跟变量定义类似,变量类型后加【】
        char[] arrChar;
        boolean[] arrBoolean;
        String[] arrStr;

初始化数组

指定长度、分配内存空间、每个元素给初始化的值

  • new 类型【长度】

  • new 类型【】{ 赋值 }

  • 定义的时候 类型【】 数组变量 = { } 直接赋值

如果数组初始化的时候没有赋值,按下面的规则给数组赋默认的值

数据类型默认值
float、double00
char“\u0000”不可见字符
booleanfalse
引用类型(类、接口、数组)null
byte、short、int、long0

给数组赋值:

        arrInt = new int[5];//长度为5,int类型数组默认初始值为0
        arrChar = new char[]{'a','b','c'};//初始化的同时赋值,赋几个值长度就为几
        arrStr = new String[] {"Tom","Jack"};
        float[] arrFloat = {3.12F,2.5F};//数组定义的时候用{}直接赋值

使用数组

数组变量名【下标】,就可以读写数组的元素

  • 下标不能越界,否则会抛出异常

  • 数组变量有一个lenght属性,可以获取数组的长度

        //数组的使用
        System.out.println(arrInt[0]);//数组变量名【下标】,读取数组指定元素的值
        System.out.println(arrStr[1]);
        System.out.println(arrFloat[2]);
​
        //数组的赋值
        arrInt[0] = 88;
        arrStr[1] = "世界";
        arrFloat[2] = 8.88F;
        System.out.println(arrInt[0]);
        System.out.println(arrStr[1]);
        System.out.println(arrFloat[2]);
​
        //访问数组元素时,超出范围会抛出异常:ArrayIndexOutOfBoundsException(数组下标越界)
        arrInt[5] = 100;
        //数组变量有一个lenght属性,就是数组的长度
        System.out.println(arrInt.length);//打印数组的长度

用循环遍历数组

  • for循环

  • foreach

    for(类型 变量名: 数组名){

    //变量的值就是数组里元素

    }

        System.out.println("======顺序遍历数组======");
        for (int i = 0; i < arrInt.length; i++) {
            System.out.println(arrInt[i]);
        }
​
        System.out.println("======倒序遍历数组=======");
        for (int i = arrInt.length - 1; i >= 0; i--) {
            System.out.println(arrInt[i]);
        }
​
        System.out.println("========遍历数组并赋值========");
        for (int i = 0; i < arrInt.length; i++) {
            arrInt[i] = i;
        }
        for (int i = 0; i < arrInt.length; i++) {
            System.out.println(arrInt[i]);
        }
​
        System.out.println("=====foreach=====");
        //foreach,增强的for循环    不能给数组赋值
        for(int i : arrInt){  //i是用于接受每一次循环的变量
            System.out.println(i); //不能倒序
        }

多维数组

        int[][] arrInt1 = new int[5][3];//外层的数组和内层的数组都指定初始化长度
        int[][] arrInt2 = new int[5][];//初始化时内层可以不指定长度
        int[][] arrInt3 = new int[][]{{3,5},{1,6,9}};//内层长度可以不一致

        //二维数组
        int[][] arrInt = {{1,2,3},
                          {4,5,6},
                          {7,8,9}};
        System.out.println(arrInt[1][1]);//第一个【】第几个数组,第二个【】数组里的位置
​
        //用循环嵌套遍历二维数组
        for (int i = 0; i < arrInt.length; i++) {//循环外层数组
            for (int j = 0; j < arrInt[i].length; j++) {//循环数组里面的元素
                System.out.println(arrInt[i][j]);//打印每一层每一个
            }
        }

Arrays类的使用

        String[] arrStr = {"abc","123","456","世界"};
        //在数组里搜索一个元素,搜到返回元素的下标,没有搜到返回负数
        int i = Arrays.binarySearch(arrStr,"世界");
        System.out.println(i);
​
        //复制一个新数组,第一个参数就是原数组,第二个参数是新数组的长度
        String[] arrNew = Arrays.copyOf(arrStr,5);
        System.out.println(arrNew.length);
​
        //toString把数组转为字符串
        System.out.println(Arrays.toString(arrStr));//打印数组
​
        //对数组进行排序
        Arrays.sort(arrStr);
        System.out.println(Arrays.toString(arrStr));

数组冒泡排序

        //对原始数组排序
        int[] arrInt = {20,6,49,4,2};
        //外层循环决定排多少个数,数组长度 - 1
        for (int i = 0; i < arrInt.length - 1; i++) {
            //用第一个元素依次跟后一个元素比较
            //每排好一个数,最大的下标数减一,arrInt.length - 1 - i
            for (int j = 0; j < arrInt.length - 1 - i; j++) {
                //相邻两个数比较,大的往后排(交换)
                if(arrInt[j] > arrInt[j + 1]){
                    int temp = arrInt[j + 1];
                    arrInt[j + 1] = arrInt[j];
                    arrInt[j] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arrInt));

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值