理解数组
- 概念:数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型,只要所有的数组元素具有相同的数据类型即可 - 定义数组的方法:
①:type[] arrayName;
(推荐使用这种方式)
②:type arrayName[];
注意:定义数组时不能指定数组的长度 - 数组的初始化
Java中的数组必须先初始化,才能使用,初始化就是给数组中的元素分配内存空间和赋值
①:静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
语法格式:
arrayName = new type[]{element1, element2, element3, ...};
或者简写成:type[] arrayName = new type{element1, element2, element3, ...};
(在定义时直接完成初始化)
例如:int[] intArr = new int[]{1, 2, 3, 4};
或者:int[] intArr = {1,2,3,4};
②:动态初始化:只指定数组的长度,由系统为每个数组元素分配默认值
格式:type[] arrayName = new type[length];
举例:int[] intArr = new int[3];
说明:定义了一个int类型的数组,这个数组可以存放3个int类型的值
二维数组
定义二维数组的三种格式:
type arrayName[][] = new type[m][n];
type[][] arrayName = new type[m][n];//推荐
type[] arrayName[] = new type[m][n];
举例:
定义一个二维数组,int[][] arr = new int[3][2]
,二维数组中有3个一维数组,分别为arr[0],arr[1],arr[2],
这三个一维数组又分别包含两个元素,比如数组arr[0]
中有两个元素,分别为arr[0][0]
和arr[0][1]
说明:二维数组就是数组中的数组
Java中的内存分配问题
我们知道,变量的初始化需要在内存中分配内存,所以,为了提高内存的运行效率,对内存空间 进行了不同区域的划分,每一份区域都有特定的处理数据和内存管理的方式;
Java中的内存结构:栈、堆、方法区、本地方法区、寄存器
- 栈内存:暂时存储,用于
存储局部变量
,当数据使用完,所占空间会自动释放。 - 堆内存:
存储数组和对象
,通过 new 建立的实例都存放在堆内存中,任何的”引用数据类型”的”值”都存在堆里。 - 方法区:
静态存储区、构造函数、常量池、线程池,方法字节码
- 本地方法区:被系统占用,window 系统占用 ,被定义为
native 的方法
。 - 寄存器:存储正要准备交给
CPU
处理的字节码