数组定义:可以存储多个元素的容器,这多个元素的数据类型(可以是基本类型,也可以是引用类型)要一致。初始化定义:为数组开辟控件,并为每个数组元素赋值。数组初始化有两种方式:(1)静态初始化:初始化时指定数组长度,由系统为数组分配初始值。比如 :int[] array = new int[]{1,20,6,8};简化写法: int[] array = {1,20,6,8};(2)动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。比如 int[] array = new int[4];这里面的new 就是为数组分配内存空间。Java程序为了提高程序的效率,就对数据进行了不同空间的分配,具体是划分为如下五个内存空间:(1)栈内存:存放的是局部变量。(2)堆内存:存放的是所有new出来的东西。(3)方法区:(4)本地方法区:存放和系统相关的方法。(5)寄存器:提供给CUP使用的。栈内存特点:局部变量使用完就会释放,比如:{int x = 100;*******}这个花括号走完这个x就会被释放掉。堆内存特点:(1)每个new出来的东西都有地址值。(所以我们输出东西的时候,有时候输出的方式不对,却输出了地址值)(2)每个变量都有默认值:byte、short、int、long 默认值是0;float、double 默认值是0.0;char 默认值是'\u0000'(其实就是空字符串);引用类型 默认值是null;(3)使用完毕就会变成垃圾,但是并没有立即回收。会在拦击回收期空间的时候回收。你new出来的东西其实会同时在栈内存和堆内存中,比如:int[] array = new int[6];首先这个array是一个局部变量,他会在栈内存中开辟空间,然后这个空间中存放了一个地址值,这个地址值指向的是堆内存中new 出来的地址(分配的空间),然后如果想使用这个局部变量的数据,会跟着地址去找。
方法区:方法区里面有一部分区域是加载class文件,这个要跟对象结合起来理解,java文件跑起来会先编译成class文件,然后方法区里面加载class文件,在堆里面new 对象的时候,会先去这个区域看是否存在这个对象的class文件,存在才会开辟对象区域。拿到class里面的成员变量和方法,而这些方法会在栈内存中被调用,调用完之后就会释放掉。