一维数组内存分析及数组元素的创建和使用

    xiaoxiao2021-03-26  28

    一、数组概述

        1. 数组可以看成是多个相同类型数据组合,对这些数据的统一管理。

        2. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。

        3. 数组中的元素可以是任何数据类型,包括基本类型和引用类型

    二、一维数组的声明

        1.一维数组的声明方式: type var[ ] ;type[ ] var ;

        2.Java语言中声明数组不能指定其长度(数组中元素的个数),

             例如: int a[5] ;    非法

    三、数组对象的创建

         Java使用关键字new 创建数组对象,格式为:数组名 = new 数组元素的类型 [数组元素的个数]

           例如:

    public class Test { public static void main(String args[]) { s = new int[5]; for (int i=0; i< 5; i++) { s[i] = I; } } }

    四、元素为引用类型的数组

    元素为引用数据类型的数组中的每一个元素都需要实例化。

    public class Test { public static void main(String args[]) { Date[] days; days = new Date[3]; for (int i = 0; i < 3; i++) { days[i] = new Date(2004,4,i+1); } } class Date { int year;int month;int day; Date(int y,int m,int d) { year = y; month = m; day = d; } } }

    内存分析:

    days

    Date[] days声明数组时,由于未创建数组对象,栈内存中内容为NULL

    执行到days = new Date[3],栈中内容更新,指向堆中new出来的对象。堆中的内容也没有初始化,所以也是NULL

    执行完for循环之后,days[0], days[1], days[2]分别都指向了一个新的对象

    五、数组初始化

        1. 动态初始化

             数组定义与为数组分配空间和赋值的操作分开进行,先分配,后赋值。

                 int a[ ] ;   //定义

                 a = new int [3] ;  //分配空间

                 a[0] = 3 ; a[1] = 9 ; a[2] = 8 ;   //赋值

        2. 静态初始化

             在定义数组的同时就为数组元素分配空间并赋值。例如:

                  int a [ ] = {3,9,8};

                或

                  Date days [ ] = {new Date(1,4,2004),

                                            new Date(2,4,2004),

                                            new Date(3,4,2004)

                                          }

         3. 数组元素的默认初始化

                   数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间时,每个元素也按照成员变量的规则被隐式初始化。如,double 类型,默认 0.0;引用类型,默认NULL; 逻辑类型,默认 false。

    六、数组元素的引用

          1. 定义并用运算符 new 为之分配空间后,才可以引用数组元素中的每个元素,数组元素的引用方式为:

                                                      arrayName[index]       2.  index为数组元素下标,可以是整型常量或整型表达式。如:a[3], b[i], c[6*i]  

          3.  数组元素下标从0开始;长度为n的数组的合法下标取值范围为 0~n-1

          4.  每个数组都有一个属性 length 指明它的长度。 a.length的值为数组a的长度(元素个数)

                         注意length后不要加括号,这里的length是一个属性,不是一个方法。与String区分开来。

                       

    转载请注明原文地址: https://ju.6miu.com/read-664101.html

    最新回复(0)