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

一、数组概述

    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区分开来。

                   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值