菜鸟先飞之JAVA_数组

来源:互联网 发布:医学答案软件 编辑:程序博客网 时间:2024/05/03 18:29

数组概述和定义格式说明

  • 为什么要有数组(容器)
    • 为了存储同种数据类型的多个值
  • 数组概念

    • 数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
    • 数组既可以存储基本数据类型,也可以存储引用数据类型。
  • 数组定义格式
    数据类型[] 数组名 = new 数据类型[数组的长度];

数组的初始化动态初始化

  • 什么是数组的初始化
    • 就是为数组开辟连续的内存空间,并为每个数组元素赋予值
  • 如何对数组进行初始化
    • a:动态初始化 只指定长度,由系统给出初始化值
      • int[] arr = new int[5];
    • b:静态初始化 给出初始化值,由系统决定长度
  • 动态初始化的格式:
    • 数据类型[] 数组名 = new 数据类型[数组长度];
  • 静态初始化的格式:

    • 格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
    • 简化格式:
      • 数据类型[] 数组名 = {元素1,元素2,…};
  • 初始化值

    • 整数类型:byte,short,int,long默认初始化值都是0
    • 浮点类型:float,double默认初始化值都是0.0
    • 布尔类型:boolean默认初始化值false
    • 字符类型:char默认初始化值’\u0000’
      • char在内存中占的两个字节,是16个二进制位
      • \u0000,每一个0其实代表的是16进制的0,那么四个0就是代表16个二进制位
  • 地址表示

    • [I@19bb25a
      • [代表是数组,几个就代表几维
      • I代表是int类型
      • @是固定的
      • 19bb25a代表的是数组的地址值
  • 数组操作的两个常见小问题越界和空指针

    • ArrayIndexOutOfBoundsException:数组索引越界异常
      • 原因:你访问了不存在的索引。
    • NullPointerException:空指针异常
      • 原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
      • int[] arr = {1,2,3};
      • arr = null;
      • System.out.println(arr[0]);

数据传递问题

  • 基本数据类型的值传递
    • 不改变原值,因为调用后就会弹栈,局部变量随之消失
  • 引用数据类型的值传递
    • 改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问
  • Java中到底是传值还是传址
    • 既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
    • java中只有传值,因为地址值也是值