javaSE --基础部分 数组

数组介绍

数组(array)是一种r容器,用来存储同种数据类型的多个值。
总结: 数组容器在存储数据的时候,需要结合数据类型考虑。
例如:int类型的数组容器(boolean byte short double)
建议:容器的类型,和存储的数据类型保持一致

数组容器的使用场景

需求:统计两个班级学生的平均分
一班: 100 90 80
二班: 11 22 33 6个数据,6个变量存储,100个数据呢?
在这里插入图片描述总结:如果今后要操作的数据,是同一组数据容器进行存储
在这里插入图片描述以上定义数组格式,第一种较为常见

  • 以下为例,代码仅供参考:
package array;
    /*
    数组的定义的格式:
            1.数据类型[] 数组名;
            2.数据类型 数组名[];

    */
public class code01 {
        public static void main(String[] args) {
            //数据类型[] 数组名;
            //定义了一个int类型的数组,数组名叫arr

            /*
            这里虽然是定义了一个数组,但也仅仅只是一个数组类型的[变量],变量没有进行初始化,就直接使用,这就是错误原因。
            */
            int[] arr;
            System.out.println(arr);

            //定义了一个charr类型的数组,数组名叫aArr
            char[] cArr;
            System.out.println(cArr);

            int a = 10;
            System.out.println(a);
        }
}

数组初始化值动态初始化

  • 数组初始化概述
    • java中的数组必须先初始化,然后才能使用
    • 所谓初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程
    • 动态初始化
      • 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
      • 格式:数据类型:数据类型[]变量名 = new 数据类型[数据长度];
      • 范例: int [] arr = new int[3]
package array;

public class code02 {
    /*
    数组的动态初始化:
        在初始化的时候,需要手动指定数组的长度,系统会数组容器分配初始值.
    动态初始化格式:
        数据类型[] 数组名 = new 数据类型[数组的长度];

    注意:
    [I@1b6d3586
            @ : 分隔符
            [ : 当前的空间是一个数组类型
            I : 当前数组容器中所存储的数据类型
                1b6d3586:十六进制内存地址
            */
    public static void main(String[] args) {
        //数据类型[] 数据名 = new 数据类型[数组的长度];
        //通过new关键字创建了一个int类型的数组容器,该容器可以存储5个int类型的整数,该容器被arr数组变量所记录
        int[] arr = new int[5];
        //[I@1b6d3586
        System.out.println(arr);

        byte[] bArr = new byte[3];
        //[B@4554617c
        System.out.println(bArr);
    }
}    

注意:打印数组变量名,出现的是数组在内存中的地址值

例如:[I@10f87f48

数组元素访问

  • 数组变量访问方式

  • 格式:数组名

  • 数组内部保存的数据的访问方式

  • 格式:数组名[索引]
    作用:访问数组容器中的空间位置

索引是数组容器中空间的编号
特征1:索引从0开始
特征2:索引是连续的
特征3:索引逐一增加,每次加1

  • 索引是数组中空间的编号
  • 特征1:索引从0开始
  • 特征2:索引是连续的
  • 特征3:索引逐一增加,每次加1
    作用:访问数组容器中的空间位置在这里插入图片描述
package array;

public class code03 {
    /*
        数组动态初始化:
               初始化的时候,手动指定数组长度,系统会为数组容器分配初始值.

        数组的元素访问格式:
                数组名[索引]

                索引:数组中数据的编号方式,编号从0开始
                作用:访问数组容器中的空间位置

          注意:
                数组在创建完毕后,即使没有赋值,也可以取出,但取出的元素都是默认初始化值.
        */
    public static void main(String[] args) {
        int[] arr = new int[3];      //0 1 2
        System.out.println(arr);     //数组的内容地址 [I@1b6d3586

        //数组名[索引] 访问数据库容器中的空间位置
        System.out.println(arr[0]);    //0 系统默认分配的默认初始化值
        System.out.println(arr[1]);
        System.out.println(arr[2]);

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

        //数组名[索引]
        arr[0] = 11;
        arr[1] = 22;
        arr[2] = 33;

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

java中内存分配

java程序在运行时,需要在内存中分配空间
为了提高运算效率,就对空间进行了不同区域的划分
每一片区域都有特定的处理数据方式和内存管理方式

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

数组内存图(多个数组指向相同)

在这里插入图片描述因为之后的数组没有new所以在堆内存中创建不了进程,就把之前001的堆内存给覆盖了

当两个数组,有一个数组执行后,那么另一个数组看到的就是操作后的现象。

数组的静态初始化

静态初始化: 初始化时,就可以指定数组要存储的元素,系统还会自动运算出该数组长度

  • 格式: 数据类型[] 变量名 = new 数据类型[] {数据1,数据2,数据3, …}

  • 范例: int [] arr = new int [] {1,2,3}

  • 简化格式: 数据类型[ ] 变量名 = {数据1,数据2,数据3,…};

  • 范例 : int [ ] arr = {1 , 2 , 3};4

package array2;

public class code05 {
    /*
        数组静态初始化: 初始化时指定每个数组元素的初始值,由系统决定数组长度

        完整格式:
                数据类型[] 数组名
        简化格式:
                数据类型[] 数组名
    */
    public static void main(String[] args) {
        // 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...};
        int[] arr = new int[]{11,22,33};
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);

        // 数据类型[] 数组名 = {数据1,数据2,数据3...};
        int[] arr2 = {44,55,66};
        System.out.println(arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);
    }
}

两种初始化的区别对比

  • 动态初始化: 手动指定数组长度,由系统给出默认初始值。
  • 静态初始化: 手动指定数组元素,系统会根据元素个数,计算出数组的长度

使用场景

动态初始化: 只明确元素个数,不明确具体数值,推荐使用动态初始化
例:使用数组容器来存储键盘录入的5个整数

int[] arr = {?????};
int{} arr = new int[5];
  • 静态初始化: 需求中已经明确了要操作的具体数据,直接静态初始化即可
    例: 将一班的学生成绩存入数组中 11,22,33
int[] arr = {11,22,33}

在这里插入图片描述- 空指针异常 : 访问的数组已经不再指向堆内存的数据,造成空指针异常

  • null : 空值,引用数据类型的默认值,表示不指向任何有效对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值