数组的概念

  • 数组的四要素
  • 元素的类型【也称为数组的类型,例如int double float 等等】
  • 标识符【也叫作数组名】
  • 数组的元素【也叫作数组的成员】
  • 数组的下标【从0开始,到数组长度减1结束,例如长度为n的数组就是0到n-1】
  • 注意
    • 数组元素【数组成员】的访问需要通过数组名结合下标去访问
    • 数组元素一定是同类型的或者兼容类型的
// 例如:下面的2重是合法的 
int [] b={12, 23, 34, 'A'}; 
double [] a={12.5, 32.4f}; 
  • 数组的定义与使用
  • 声明数组
  • 注意
    • 数组声明的时候不规定长度大小
    • 可以直接在声明的时候给他分配空降大小
类型[] 数组名;
类型 数组名[];
类型[] 数组名 = new 数组类型[n];
  • 分配空间【就是高度计算机内存准备开辟几个连续的空间】

数组名 = new 类型[数组长度];  注意:数组的长度也称为元素的个数

  • 赋值

数组名[下标] = 值;

数组的赋值移动要通过数组元素一个个赋值,不能直接赋值给数组名

  • 使用数组元素

使用数组名加下标访问元素  数组名[下标]

数组元素的默认值

  • char 类型———————空字符
  • 整型【long/int/short/byte】—0
  • String类型——————–null
  • boolean类型——————-false
  • 浮点型【float/double】——–0.0

数组的赋值方式

// 方式1
int[] a = {1, 2, 3, 4, 5};
// 通过数组组.length获取数组长度
System.out.println(a.length);

// 方式2
int[] b = new int[]{1, 2, 3, 4, 5, 6};
// 通过数组组.length获取数组长度
System.out.println(b.length);
  • 注意:方式2的new后面的[] 中不能指定数组长度
  • 以上方式一和方式二的赋值必须在一行上面完成【即声明的同时赋值】
// 典型错误
int = c;
c = {1, 2, 3}

// 以下不报错,但是不建议这么用
int = c;
c = new int[]{1, 2, 3}
  • 可以使用循环语句结合数组的下标给数组赋值

数组的内存模型

  • 栈内存—-存放数组名【实际存放的是指向一块堆内存的地址】
  • 堆内存—-通过new 关键字开辟出来的空间区域【实际存放数组元素的集合】
  • 注意:
    • 当栈中没有任何引用指向这块堆内存区域的时候,JVM虚拟机会多段时间过来回收掉这块堆内存区域
    • 当栈内存中的引用不指向任何堆内存的时候,它也会被释放掉
    • 数组名就是一个堆内存区域的引用
    • 类似一根线牵着一个风筝,如果这根线断了,那么这个风筝就费了,成了垃圾,需要被回收掉。

增强型for循环

  • 语法格式
for (类型 element : 集合){
    // element 表示取出的集合中的成员
}

注意:一般使用增强型for循环取出数组元素,而不使用它去修改数组元素