java数组的初始化

一:数组的动态初始化java运行过程

1:数组的动态初始化,只指定数组长度,初始值由系统提供默认值

2:学习java的运行能加深我们对代码的理解。

java程序为了提高程序效率,就对数据进行了不同空间的分配。具体是划分了如下5个内存空间

例:int[] arr=new int[3]

:栈内存存放的是局部变量;栈内存的数据在其代码块使用完毕后就释放掉。即int[] arr

:存放的是 所有new出来的东西,即new int[3]

     特点:1:每一个new出来的东西都有地址值,也就是栈中的arr输出时输出的是其在堆中的地址,如下图输出

                2:每个变量都有默认值,如申请数组动态变量时,只确定了数组的长度,那么数组的初始量就被初始化为默认值

                      byte,short,long,int:初始值为0    float、double:初始值为0.0       char:初始值为‘\u0000’

                      boolean初始值为false     引用类型:null

                 3: 使用完毕后就变成了垃圾,但是并没有立即回收,会在垃圾回收器空闲的时候回收

 

栈内存中两个引用同时指向堆内同一个内存空间时,无论是他们谁操作,都针对同一个地址

例如:int[] arr=new int[3]      int[] arr1=arr  arr1[0]=100  输出arr[0]的值为100,是因为将arr的地址给了arr1

方法区:对于数据变量即基本类型来说方法区存放的是类中的各个方法,然后再根据在main方法中出现的顺序依次在栈中为其分配内存空进,进而进行操作,在某一方法中对其数据进行操作时,这个变量如果也出现在其他方法中,其他方法中该变量不会因为此方法的改变而改变,因为各个方法在栈中是独立的内存空间。

 方法区影响方法的调用即参数传递问题:

        基本类型:形参的改变对实参没有影响

        引用类型(地址数据):形参的改变直接影响实参

(后面博客还会对方法区进行补充讲解)

本地方法区:和系统相关

寄存器:cpu使用

二:数组的静态初始化

数组静态初始化指定每个元素的初始值,由系统决定数组长度.

int[] arr={1,2,3};

三:数组常见错误

ArrayIndexOutOfBoundsException:数组索引越界异常   原因:访问了不存在的索引

NullPointerException:空指针异常   原因:arr指向堆得地址已不存在,无法访问堆内数据

不能同时动态和静态初始化

四:二维数组

数据类型[][] 数组名=new 数据类型 [m][n]

或:数据类型 数组名[][]=new 数据类型[m[n]

       数据类型[] 数组名[]=new 数据类型[m][n]

动态为二维数组中一维数组分配空间的过程如下:

二维数组一个编号表示地址,两个编号表示数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值