声明、初始化

  • 声明:int[] ids;——->int ids[]也可,不报错。

String[] names;

  • 静态初始化:数组的初始化和数组元素的赋值操作同时进行

ids = new int[]{1001,1002,1003,1004};

  • 动态初始化:数组的初始化和数组元素的赋值操作分开进行

names = new String[5];//[]中可以是变量

  • 声明与初始化合并:
    1. Int[] ids = new int[]{1001,1002,1003,1004};
    2. Int[] ids ={1001,1002,1003,1004};--->类型推断
    3. String names = new String[5];

数组元素的引用

  • 定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
  • 数组元素的引用方式:数组名[数组元素下标]
  • 数组元素下标可以是整型常量或整型表达式。

如a[3] , b[i] , c[6*i];

  • 数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 —>n-1;

如int a[]=new int[3]; 可引用的数组元素为a[0]、a[1]、a[2]

  • 每个数组都有一个属性length指明它的长度。(可用于遍历数组作为循环条件)

例如:a.length 指明数组a的长度(元素个数)

  • 数组一旦初始化,其长度是不可变的

数组元素的默认初始化值

image.png

  • 数组元素是整型:0
  • 数组元素是浮点型:0.0
  • 数组元素是char型:0或’\u0000’,而非’0’
  • 数组元素是boolean型:false

  • 数组元素是引用数据类型:null


一维数组的内存解析

image.png
image.png


数组的赋值与复制

赋值:

int[] array1,array2;
array1 = new int[]{1,2,3,4};
array2 = array1;
将array1保存的数组的地址值赋给了array2,
使得array1和array2共同指向堆空间中的同一个数组实体。

image.png

复制:

array2 = new int[array1.length];
for(int i = 0;i < array2.length;i++){
array2[i] = array1[i];
}
通过new的方式,给array2在堆空间中新开辟了数组的空间。
将array1数组中的元素值一个一个的赋值到array2数组中
image.png