-
数组是一个容器,用来存一批同种类型的数据的
-
数组适合于存储和操作批量数据
-
静态初始化指的是:在定义数组时,直接给数组中的数据赋值。
-
动态初始化:在定义数组时,不直接给数组中的数据赋值,指定元素类型和长度就行
-
数组变量存放在栈内存,(数组对象)元素和索引存放在堆内存,变量的值就是数组对象存储在堆内存中的地址值
-
初始化的默认值:
-
虚拟机的内存划分为方法区、栈、堆、本次方法栈、寄存器
-
运行一个java程序,主要看JVM中包含的哪几部分内存区域?
方法区:程序编译后的class文件 栈内存:方法运行时进入的区域 堆内存:new出来的东西都放在堆内存存放对象实例和数组
-
简单说说int a = 10;int[] arr = new int[3]这两行代码的执行原理?
a是变量,直接放在栈中,a变量存储的数据就是10这个值 new int[3] 是创建一个数组对象,会在堆内存中开辟区域,存储3个整数 arr是变量,在栈中,arr中存储的是数组对象在堆内存中的地址值
-
基本类型的变量里面存储的是具体的值,引用类型变量存储的是地址值,根据地址值到堆中找相应的对象。
Q&A
-
请写出数组的几种初始化方式
静态初始化:int[] a=new int[]{1,2,3,4};int[] a={1,2,3,4}; 动态初始化:int[] a=new int[4];
-
请写出遍历数组的方式
for(int i=0;i<a.length;i++){ System.out.println(a[i]); }
-
请说一说ArrayIndexOutOfBoundsException是什么意思,该如何避免这个异常?
数组下标越界异常 确保访问数组元素的下标在取值范围内
-
你是怎么理解多维数组的?
我认为多维数组是一个数组的嵌套,将一个数组变量作为元素保存在另一个数组变量中,同时这个数组变量还可以作为元素继续嵌套。
数组的特点:
长度是定义时固定的,不能改变
存储的元素是同一种数据类型
存储的是连续的空间(所以查找速度很快)
Arraylist用数组实现,所以查找速度很快
数组支持存放不同长度的元素
数组不支持存放不同类型的元素