数组初始化过程以及内存理解

   
数组定义:可以存储多个元素的容器,这多个元素的数据类型(可以是基本类型,也可以是引用类型)要一致。

  初始化定义:为数组开辟控件,并为每个数组元素赋值。

  数组初始化有两种方式:
  (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里面的成员变量和方法,而这些方法会在栈内存中被调用,调用完之后就会
         释放掉。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值