数组:存储数据长度固定的容器,保证每个数据的数据类型要一致。
容器:将多个数据存储到一起,每个数据称为该容器的元素。
数组有三种创建方式:
数组存储的数据类型[] 数组名称 = new 数组存储的数据类型[长度(正整数)];(动态初始化)
数组的数据类型[] 数组名称 = new 数组的数据类型[]{元素1,元素2,元素3,...};(静态初始化)
数组的数据类型[] 数组名称 = {元素1,元素2,元素3,.....};(静态初始化)
如果不确定数组当中存储的内容时,用动态初始化,反之内容已经确定了,使用静态初始化。大多数情况下,建议使用动态初始化。
创建空数组的默认值:
对于浮点数类型来说,默认值是0.0
对于字符类型来说, 默认值是'u0000' 显示是一个空格
对于布尔类型来说, 默认值是false
对于引用类型来说, 默认值是null
数组特点:
1.长度不可变
2.数组本身是引用类型
3.数组存的元素数据和数组类型保持一致(数组可以当做一个杯子,当杯子里装牛奶的时候就不要再装茶叶了)
数组访问:
每一个存储到数组当中的元素,都会自动的分配一个编号
从【0】开始,这个系统自动分配的编号称为数组的索引(index),可以通过索引访问数组当中的元素。
数组长度可以用:数组名.length 得到值为int类型
修改索引对应的值:数组名[索引]=(直接替换)元素值
JVM内存划分:
内存空间进行不同区域的划分,每一片区域都有特定的处理数据方式和内存管理方式。这样是为了提高运算效率
区域名称 | 作用 |
寄存器 | 给CPU使用,和开发没有关系 |
本地方法栈 | JVM在使用操作系统功能时使用,和开发没有关系 |
方法区 | 存储可以运行的class文件(常量池、静态域) |
方法栈(stack) | (main)方法运行时使用的内存 |
堆内存(heap) | 存储对象或者数组,new出来的对象,都存储在堆内存中(可以当做是在内存中的容器) |
如果输出数组的名字,会在控制台显示数组所在内存地址哈希值
如果两个变量同时指向同一个数组,因为在内存中地址哈希值不变,所以修改任意一个变量的索引元素值,另一个变量所在的索引元素值也会变
数组遍历:
将数组中的每一个元素分别获取出来就是遍历。
数组的索引从0开始,依次递增,递增到arr.length-1为止,引入循环结构
public static void main(String[] args) {
// 静态初始化一个int数组
int[] arr = {1,2,3,4};
// 数组遍历 for或者while
for (int i = 0; i <= arr.length-1; i++) {//遍历容器时,初始化语句当中的循环变量一般都是索引值
System.out.println(arr[i]);
}
}