首页 > 编程语言 > 详细

数组的内存分析与三种初始化类型

时间:2020-10-14 00:19:28      阅读:36      评论:0      收藏:0      [点我收藏+]

数组的内存分析

具体需要了解三部分: 堆、 栈、 方法区

堆:

  1. 存放new的对象和数组

  2. 可以被所有的线程共享,不会存放别的对象引用。

栈:

  1. 存放基本变量类型(包含该基本类型的具体数值)

  2. 引用对象的变量(会存放这个引用在堆里的具体地址)

方法区:

  1. 可以被所有的线程共享

  2. 包含了所有的class和static变量

 

 

数组的内部形成过程

技术分享图片

在声明数据后,首先在里生成一个int类型叫array的空数组,第二步,创建数组时,array会在里生成一个用来存放数组元素的空间,并根据所输入的数字生成相应数量的下标。最后第三步,给数组的元素赋值,就可以根据下标找到所对应的数字,如该元素没有被赋值,则默认为0。

 

因为给数组赋的大小只有10个,如果在取值时,取超出的下标,就会如下报错:

java.lang.ArrayIndexOutOfBoundsException: (数组下标超出界限)

array:数组 index:下标 out:出 bounds:界限 exception:异常

 

数组三种初始化类型

静态初始化:

        //静态初始化
   //数组类型 变量名= 数组    
       int[] a = {1,2,3,4,5,6,7,};
       System.out.println(a[0]);
     

在静态初始化中,大括号用来表示包含的数组,写了多少个元素,就是多大空间,空间一旦确定,就不可被改变。输出时按照下标从0开始的先后顺序输入对应的下标即可。

动态初始化

  //动态初始化
       int[] nums=new int[10];//声明并创建一个数组
       //给数组的元素赋值
       nums[0] = 1;
       nums[1] = 2;
       nums[2] = 3;
       nums[3] = 4;
       nums[4] = 5;
       nums[5] = 6;
       nums[6] = 7;
       nums[7] = 8;
       nums[8] = 9;
       nums[9] = 10;
?
       System.out.println(nums[9]);

动态初始化可以先声明类型,再创建数组,最后给元素赋值。他的存储空间不会因为数组存储的数据的数量而改变,如果数量不足则默认赋值0;数量超出则报错。但它的存储空间可以任意调节改变。

 

默认初始化

        //3、默认初始化
       int[] b = new int[8];//声明并创建
       b[0] = 5;//给下标0 赋值5
?
       System.out.println(b[0]);//输出为5
       System.out.println(b[6]);//输出为0

在创建了数组的时候,它就已经被赋值了。而它的默认初始值,我们可以通过重新赋值来改变初始值。如果不赋值的元素,默认值就为0。

 

数组的内存分析与三种初始化类型

原文:https://www.cnblogs.com/jinweichaoyouqu/p/13812345.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!