数组
数组类型是引用类型。
定义格式:
格式一:
数据类型 [ ] 数组名=new 数据类型 [ 长度 ];
new:创建数组的关键字,通过new开辟内存空间
格式二:
数据类型 [ ] 数组名=new 数据类型[ ]{元素一,元素二,元素三…};
元素确定,可以避免空间的浪费
格式三:
数据类型[ ] 数组名={元素一,元素二,元素三…};
通过数组的索引访问数组的元素
索引:也叫下标、脚标,是数组元素距离数组起始位置的偏移量。数组的索引从0开始。
- 在输出中直接写入数组名,输出的是数组的地址。
- 在一个数组中,没有写入数组元素,则默认为0
数组的长度: 数组名.length
数组的最大索引: 数组的长度-1
数组的初始化
动态初始化:只指定长度,由系统给出默认值
整数型:0
浮点型:0.0
字符型:‘\u0000’(空字符)
布尔型:false
引用类型:null
静态初始化:给出初始化值,由系统决定数组长度。
Java 程序的内存分配
方法区:存储可运行的class文件。包含方法,静态成员,常量等
栈:方法运行时使用的内存,特点是“后进先出”
堆:存储new出来的数组或对象
本地方法栈:JVM在调用操作系统功能时使用,与开发无关。
寄存器:CPU使用,与开发无关
一个数组两个引用
当定义arr1时,开辟了一块空间。
在定义arr2时,并没有new,而是等于arr1
相当于将arr1的地址给了arr2
此时对arr2操作时,也相当于对arr1进行操作
相反,对arr1进行操作时,也相当于对arr2进行操作
上面一个代码的运行结果如下:
数组使用中的常见问题:
1、数组索引越界异常
2、空指针异常:
数组引用存储的值为null 而非数组的地址值时main方法进入方法区中存储,然后进栈。从第一行代码开始执行。
创建arr1并在堆中开辟一块空间。
划分为三块,分别存储1,2,3
当执行arr1=null时
栈中的arr1不在指向堆中的一块空间
而是指向方法区中的一块空间,值为null(空)
引用类型的变量作为参数传递时,传递的是地址值。
基本类型的变量作为参数传递时,传的是值。
来源:CSDN
作者:LQyh_
链接:https://blog.csdn.net/LQyh_/article/details/104126445