《Java-数组》

《Java-数组》

1.数组介绍

  • 概念:数组是一种容器,用来存储同种数据类型的多个值。
  • 注意:数组容器在存储数据的时候,需要结合隐式转换考虑;

2.数组的定义和初始化

2.1数组定义

  • 定义格式1(常用):数据类型 [ ] 主数组名
  • 例:int [ ] array
  • 定义格式2:数据类型 数组名 [ ]
  • 例:int array [ ]

2.2初始化

  • 初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。
  • 完整格式:数据类型 [ ] 数组名 = new 数组类型 [ ] {元素1,元素2,元素3};
  • 例:int [ ] array = new int [ ]{11, 22, 33};
  • 简化格式:数据类型 [ ] 数组名 = {元素1,元素2,元素3,};
  • 例:int [ ] array = {11,22,33};
  • 注意:数组初始化后长度不能改变
  • 扩展1:直接打印数组名称,会显示数组的地址值,即数组在内存中的位置;例:[D@776ec8df

3.数组遍历

  • 数组的访问:数组名 [ 索引 ]
    • 例:int a = array [ 0 ];
  • 把数据存储到数组中
    • 格式:数组名 [ 索引 ] = 具体数据或者变量;
  • 数组的遍历方法
    public static void main(String[] args) {
        int[] num = {1,2,3,4,5,6,7,8};
        //方法1:普通for循环
        for (int i = 0; i < num.length; i++) {
            System.out.println(num[i]);
        }
        //方法2:增强for循环
        for (int i : num) {
            System.out.println(i);
        }
    }
  • 数组遍历快捷方式:数组名.fori 或者 数组名.iter
  • 案例1:数组求和
    public static void main(String[] args) {
        int[] num = {1,2,3,4,5,6,7,8};
        int sum = 0;
        //使用for循环遍历数组中元素,并累加;
        for (int i : num) {
            sum =sum + i;
        }
        System.out.println(sum);
    }
  • 案例2:统计数组中能够被3整除的数据个数
    public static void main(String[] args) {
        int[] num = {1,2,3,4,5,6,7,8,9,10};
        int count = 0;
        //使用for循环遍历数组,并判断元素能够被3整除,如果能整除统计个数;
        for (int i : num) {
            if (i%3 == 0){
                System.out.println(i);
                count++;
            }
        }
        System.out.println(count);
    }
  • 案例3:变化数组满足条件的数据
    public static void main(String[] args) {
        int[] num = {1,2,3,4,5,6,7,8,9,10};
        //方法1:普通for循环
        for (int i = 0; i < num.length; i++) {
            if (num[i]%2 == 0){
                num[i] = num[i]/2;
            }else {
                num[i] = num[i] * 2;
            }
        }
        for (int i : num) {
            System.out.println(i);
        }
    }
  • 注意:编写代码过程中,一个循环只做一件事件,以免出现逻辑混乱。

4.数组动态初始化

  • 格式:数据类型 [ ] 数组名 = new 数据类型 [ 数组长度 ]
  • 例:int [ ] num = new int [ 10 ];
  • 在动态初始化时,由我们自己指定数组的长度,由虚拟机给出默认的初始化值;
  • 默认初始化值:整数类型为0;小数类型的为0.0;字符类型的为:‘/u0000’(空格);布尔类型的为:false;引用类型的为null。
  • 形静态初始化和动态初始化区别
    • 应用场景不同,当我们明确数组中具体的元素时使用静态初始化,元素不明确时可以使用动态初始化,先指定数组大小和数据类型,后期再添加数据。

5.数组常见问题

  • 常见问题:数组下标越界: ArrayIndexOutOfBoundsException

6.数组常见操作

  • 常见操作1:求最值
    public static void main(String[] args) {
        //求数组中的最大值
        int[] arr = {33,44,23,15,360,66,19,55,88,91,63};
        int max = arr[0];//循环的开始值不能定义为0.因为数组元素有可能全部为负数;
        //方法1:使用普通for循环;
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max){
                max = arr[i];
            }
        }
        System.out.println(max);
        //方法2:使用增强for循环;
        for (int i : arr) {
            if (i > max){
                max = i;
            }
        }
        System.out.println(max);
    }
  • 常见操作2:求和并统计个数
    • 需求:生成10个10~100之间的随机数存入数组中;
    • 1)求出所有数组元素之和;
    • 2)求出所有数的平均数;
    • 3)统计有多少数比平均数小;
    public static void main(String[] args) {
        //1.定义一个大小为10的数组;
        int[] arr = new int[10];
        //2.把随机数存入到数组中;
        Random r = new Random();//创建一个随机数对象
        for (int i = 0; i < arr.length; i++) {
            int number = r.nextInt(100) + 1;
            arr[i] = number;
        }
        //3求出所有元素的和
        int sum = 0;
        for (int i : arr) {
            sum = sum + i;
        }
        System.out.println(sum);
        //4.求平均数
        int vag = sum/10;
        System.out.println(vag);
        //5.统计比平均数小的元素的个数
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] < vag){
                count++;
            }
        }
        System.out.println(count);
        //打印数组进行验证;
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }
  • 常见操作3:数据交换
    • 需求创建一个数组存入1,2,3,4,5;交换首尾索引对应的元素
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        for (int i =0, j = arr.length-1; i<j;i++,j--){
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
  • 常见操作4:打乱数据
    • 需求:打乱数组的顺序
    public static void main(String[] args) {
        //1.静态初始化一个数组
        int[] arr = {1, 2, 3, 4, 5,};
        //2.循环遍历数组,从第一个元素开始打乱顺序
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            //获取一个arr数组最大长度以内的随机数
            int randomIndex = r.nextInt(arr.length);
            //遍历到的元素和随机到的元素交换位置
            int temp = arr[i];
            arr[i] = arr[randomIndex];
            arr[randomIndex] = temp;
        }

7.数组的内存图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值