zoukankan      html  css  js  c++  java
  • 数组的内存分析与三种初始化类型

    数组的内存分析

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

    堆:

    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。

     

  • 相关阅读:
    小学数学计算出题小程序(Excel版)
    网页自动化测试技术---SeleniumBasic(VBA网页外挂)
    ODBC链接数据源(PQ学习)
    WPF动态绑定矢量图标
    由数据转为树杈的js 和由一个子节点的id获取所有的父类的id
    面试上机题目--采用vue实现以下页面效果
    html前端上机面试题
    在vue项目中的跨域解决办法
    vue-quill-editor富文本编辑器使用
    vue项目eslint配置 以及 解释
  • 原文地址:https://www.cnblogs.com/jinweichaoyouqu/p/13812345.html
Copyright © 2011-2022 走看看