数组:
概念:数组就是存放同一种数据类型的集合,在内存中的表现形式为一个实体的容器.
特点:数组可以自动给存放在其中的数据元素进行索引编号,从0号开始.方便我们直接通过操作数组来操作其中的元素数据.
定义格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; int[] arr = new int[3];
定义格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,元素,....}; int[] arr = new int[]{3,5,4,2,7,9};
数组在内存中的结构:
内存的划分:
1.寄存器(CPU进行操作管理)
2.本地方法区(所在操作系统如window中提供的一些方法)
3.方法区(类加载技术)
4.栈内存
储存的是局部变量,所谓局部变量就是在函数(方法)当中定义的变量,注意类级别下定义的变量不是局部变量.
栈内存运行效率高,其中数据生命周期短,变量所属的作用域一旦结束,该变量就自动释放.
5.堆内存
存储数组和对象(数组也是一种对象),凡是通过new来建立的实体都存放在堆内存中.
每个实体都有一个首地址值.
堆内存中的每一个变量都是一个默认初始化值,根据类型的不同而不同,整数是0,小数是0.0或者0.0f,布尔是false,
char类型是'\u0000'.
堆内存中的实体不再被指向时,该实体就会变成垃圾由垃圾回收机制来回收,并不是实时的.
相对于基本数据类型,对象被称为引用数据类型,因为在栈中的对象变量只是存储了其指向的堆中实体的地址值.
null用以取消引用类型变量的指向.
多个引用型变量可以指向同一个实体.它们只是记录了同一个实体在堆中的地址值.
几种异常和特殊情况:
1.数组索引越界异常,当访问到数组中不存在的角标时,发生该异常.
int [] arr = new int[3];//数组的中元素的个数为3个
System.out.println(arr[3]);//数组的角标编号从0开始,0,1,2.此数组没有3角标
2.空引用(指针)异常,当引用型变量没有指向任何实体时,还在使用其操作实体,就会发生该异常.
int[] arr = new int[3];
arr = null;//取消了引用类型变量的指向
System.out.println(arr[0]);//无法访问
以上两种异常在编译时并不会报错,到JVM运行时才会报异常.因为以上两种情况语法并没有错误,编译器在编译时只是检查语法,并不会真正在内存中加载数组,所以编译时不会报错.
3.一种特殊情况 ,直接打印了数据类型变量,而不是访问其中的某个元素,得到一串哈希值,表示实体在堆中存放的数据类型和地址值.一般在测试中用到,查看引用型变量指向的是一个什么样的实体.
int[] arr = new int[3];
System.out.println(arr); // [I@d12345 [:表示该实体存放的是一个数组 I:表示该实体的元素的类型是int型 //d12345是调用window方法得出的一串哈希值,表示该实体在内存中的地址值.
本文详细介绍了数组的基本概念,包括数组的定义方式及其在内存中的存储结构。同时,还探讨了数组在不同内存区域(如栈和堆)中的分配与管理,并列举了几种常见的数组操作异常。

被折叠的 条评论
为什么被折叠?



