Java-数组

1.4、数组

数组:存储同一种数据类型的多个元素的容器

取值:

  • 数组名 【索引】

定义格式:

  • A:数据类型[] 数组名;(推荐方式)

  • B:数据类型 数组名[];

  • 案例:

    • int[] arr; 定义int类型的数组,名称为 arr

    • int arr[];定义int类型的变量,变量名为arr数组

数组初始化:

  • A:数组开辟内存空间,为数组中的每个元素赋值

  • B:数组初始的方式:

    • a:动态初始化 只给出长度,系统给初始化值

    • b:静态初始化    给出初始值,由系统决定长度

动态初始化:

  • 数据类型[] 数组名 = new 数据类型[数组长度];

静态初始化:

  • 数据类型[] 数组名 = new 数据类型[]{元素1,元素2….};

  • 简化格式:

    • 数据类型[] 数组名  ={元素1,元素2,…}

动态初始化

package com.data.it;

/**
 * Created by JackFeng on 2020/3/1.
 */



public class MyArrayDemo {

    public static void main(String[] args) {
        //数据类型[] 数组名 = new 数据类型[数组长度];
        int[] arr = new int[3];

        // 释义
        /*
        * 左边:
        *   int:说明数组中的元素类型是 int 类型
        *   []:  说明是个数组
        *   arr:数组名称
        *
        * 右边:
        *   new :为数组申请内存分配空间
        *   int:数组中的元素是int类型
        *   []:数组
        *   3:数组的长度----数组中元素的个数
        * */

        //输出数组名
        System.out.println("arr"+arr); //[I@4554617c

        // 获取的是地址值,如何获取数组中的元素值
        // 数组中的元素都是有编号的,从0 开始,最大编号是 数组的长度-1
        // 索引 arr[0]
        // 取值:数组名 配合 元素编号
        // 访问格式:数组名[索引]

        System.out.println(arr[0]);  //0
        System.out.println(arr[1]); // 0
        System.out.println(arr[2]);  //0

//        赋值
        arr[0] = 100;
        arr[2] = 200;

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

        System.out.println(arr); // 001

        System.out.println(arr[0]); //100
        System.out.println(arr[1]); // 0
        System.out.println(arr[2]); //200


        // 指向一个数组

//         arr1 数组
        int[] arr1 = new int[3];
        System.out.println(arr1);
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);


        int[] arr2 = arr1;
        arr1[0] =111;
        arr1[1] =222;
        arr1[2] =123;

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

        System.out.println(arr1);
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);


        System.out.println(arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);




    }
}

静态初始化

package com.data.it;

/**
 * Created by JackFeng on 2020/3/1.
 */


public class ArraryDemo {

    public static void main(String[] args) {

        int[] arr = new int[]{1,2,3};

        int[] arr1 = {1, 2, 3};

        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);


//
        System.out.println("----------");
        System.out.println(arr1);
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);


    }
}

常见小问题

小问题:

  • ArrayIndexOutOfBoundsException: 数组索引越界异常

    • 原因 我们访问了不存在的索引

  • NullPointerException:空指针异常

    • 原因 数组已经不在指向堆内存的数据了,还使用数组名去访问数组中的数据

数组遍历练习

package com.data.it;

/**
 * Created by JackFeng on 2020/3/1.
 */
public class ArrayTest {
    public static void main(String[] args) {
        // 定义数组
        int[] arr = {1, 2, 3, 4, 5, 6};
        
        // 通过for循环遍历输出 ,调用 数组属性:length
        // 格式:数组名.length

        for (int i = 0; i <arr.length ; i++) {
            System.out.println(arr[i]);
        }
        
        
    }
}

取最值

思路:

  • A:先拿数组中的一个元素做参照物

  • B:遍历数组,让后边所有元素依次和参照物进行比较,如果元素比参照物大,就留下

  • C:整个循环遍历比较,留下的就是最大值

package com.data.it;

/**
 * Created by JackFeng on 2020/3/1.
 */
public class ArrayTest1 {

    public static void main(String[] args) {
        // 取最大值
        int[] arr = {1, 2, 3, 55, 22, 10};

        // 定义一个参照值
        int max = arr[0];

        // 循环遍历整个数组

        for (int i = 1; i <arr.length ; i++) {
            if (arr[i]>max){
                max = arr[i];
            }
        }
        System.out.println("最大值为:"+max);


    }
}

二维数组

二维数组:元素为一堆数组的数组

定义格式:

  • A:数据类型[ ] [ ] 数组名; (推荐的方式)

  • B:数据类型 数组名[ ] [ ]

  • C:数据类型[ ] 数组名[ ]

初始化:

  • A:动态初始化

    • 数据类型[ ] [ ] 数组名 = new 数据类型[m] [n];

    • m 表示的是 二维数组中一维数组的个数

    • n  表示的是 一维数组中的元素个数

  • B:静态初始化

    • 数据类型[ ] [ ] 数组名 = {{1,…},{2….},{3….}}

    • 数据类型[ ] [ ] 数组名 = new 数据类型[ ] [ ] {{元素…},{元素….}}

    • 简化格式:

取值:

  • 二维数组名配合索引可以获取到每一个一维数组  【arr[索引]

  • 一维数组配合索引名可以获取到数组中的元素arr[索引] [索引]

二维数组取值

package com.data.it;

/**
 * Created by JackFeng on 2020/3/1.
 */
public class Array2Test {
    public static void main(String[] args) {

        //数据类型[] [] 数组名 = {{元素..},{元素...}}


        int[][] arr = {{1, 2, 3}, {1, 3, 6}, {2, 3, 6}};
        //
//        System.out.println(arr);
//        System.out.println(arr[0]);
//        System.out.println(arr[0][0]);

        // 遍历二维数组

        // 第一个数组的元素
        for (int i = 0; i <arr[0].length ; i++) {

            System.out.println(arr[0][i]);

        }

        System.out.println("==========");
        // 第二个数组的元素
        for (int i = 0; i <arr[2].length ; i++) {

            System.out.println(arr[0][i]);

        }


        // 优化循环二维数组

        System.out.println(" -----------");
        // 二维数组 arr.length 就是有几个 一维数组
        for (int i = 0; i < arr.length ; i++) {
            for (int j = 0; j <arr[i].length ; j++) {
                System.out.print(arr[i][j] + "  ");
            }
            System.out.println("====");

        }
    }
}

期待您的进步

在看和转发

都是一种支持

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值