第八章:Java基础知识(四)

数组

数组

定义:存放一组相同类型数据的集合

1. 特点

  • 数组是存储同一种数据类型多个元素的集合,可看成是一个容器
  • 数组可存储基本数据类型,也可存储引用数据类型
  • 数组是Java中唯一的底层容器,集合的底层也是用的数组

2. 数组初始化

  • 静态初始化
    • 数据类型[] 数组名称 = new 数据类型[]{数组元素}
    String[] nameArr = new String[]{"张三","李四","王五","赵柳"};
    
    • 数据类型[] 数组名称 = {数组元素}
    String[] nameArr = {"张三","李四","王五","赵柳"};
    
  • 动态初始化
    • 数据类型[] 数组名称 = new 数据类型[数组长度]
    String[] nameArr = new String[4];
    nameArr[0] = "张三";
    nameArr[1] = "李四";
    nameArr[2] = "王五";
    nameArr[3] = "赵柳";
    

3. 数组操作

  • 修改
String[] nameArr = new String[]{"张三","李四","王五","赵柳"};
nameArr[0] = "田七";
  • 查看
String[] nameArr = new String[]{"张三","李四","王五","赵柳"};
String name0 = nameArr[0];
int length = nameArr.length;
  • 遍历
String[] nameArr = new String[]{"张三","李四","王五","赵柳"};
String name;
for(int i = 0; i < nameArr.length; i++){
  name = nameArr[i];
}
  • Arrays工具类
    • 数组以字符串输出:toString
    int[] arr = {1,2,3,5,4,8,6,3}
    String str = Arrays.toString(arr);
    
    • 排序:sort
    int[] arr = {1,2,3,5,4,8,6,3}
    Arrays.sort(arr);
    

4. 数组各数据类型元素的默认值

  • 基础数据类型
    • 整型
      • byte、short、int、long类型的数组,元素默认值为0
    • 浮点型
      • float、double类型的数组,元素默认值为0.0
    • 字符型
      • char类型的数组,元素默认值为\u0000
    • 布尔型
      • boolean类型的数组,元素默认值为false
  • 引用数据类型
    • 引用数据类型在数组,元素的默认值为null

基本数据类型在发生参数传递时,传递的是值
引用数据类型在发生数据传递时,传递的是地址值

5. 数组常见问题

  • 数组下标越界异常:ArrayIndexOutOfBoundsException
    • 访问了不存在的角标
    int[] arr = new int[2];
    int i = arr[2];
    
  • 空指针异常:NullPointerException
    • 栈中的数组变量没有指向堆内存中的数组实体
    int[] arr = null;
    int i = arr[0];
    

6. 数组在内存中的创建流程

数组创建1.png
  • 在 .class 文件中找到main方法,并把main方法的头加载到方法区中
  • 在方法区中寻找main方法的相关信息,把main方法的相关信息加载到栈中,并在栈中为main方法开辟一片区域--栈帧
  • int[ ] array = new int[3] 创建一个数组
    • int[ ] arr:局部变量 int[] arr 放在栈帧中
    • new int[3]:在堆中开辟一片连续的区域存储数组,按照数组长度分为3格,并分配下标;该区域会根据数据类型默认值进行初始化,int类型的默认值为0;创建对象会生成地址值,这个地址值会被赋给局部变量 int[] arr ,有了这个地址值,我们就可以找到堆中的数组
数组创建2.png
  • 先通过int[] arr找到堆中数组的地址值,通过地址值找到堆中数组的位置,再通过索引找到数值并再修改

7. 注意事项

  • 数组长度在创建时就已经固定,中途无法被改变
  • 数组可以根据下标(index)定位元素,下标从左到右,从0开始
  • 数组属于引用数据类型
  • 数组中的元素必须是同一种数据类型
  • 数组中可以有相同元素
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容