深入理解JAVA数组
7页1、为什么我们认为JAVA没有多维数组,因为从数组底层的运行机制上来看。前面的几篇文章里提到过,JAVA语言里的数组类型是引用类型,因此,数组变量其实是一个引用,这个引用指向真实的数组内存。数组元素的类型也可以是引用,如果数组元素的引用再次指向真实的数组内存,这时会发现很像多维数组。根据数组的语法定义:type arrName;, 这是典型的一维数组的定义语法,其中type是数组元素的类型。如果希望数组元素也是一个引用,而且是指向int数组的引用,那么可以把上面type具体看成int (我们知道:int就是一种类型,int类型的用法与普通类型并无任何区别),那么上面定义数组的语法就是int arrName. 扩大类型后:type arrName;JAVA语言采用上面的语法格式来定义二维数组,但它的实质还是一维数组,只是其数组元素也是引用,数组元素里保存的引用指向一维数组。之所以写上面那些概念,就是想先让大家明白一维数组与二维数组之间的区别。下面看代码吧,不想写概念了。public class TwoDimensionTest public static void main (String
2、args) /定义一个二维数组 int a; /把a当成一维数组进行初始化,初始化a是一个长度为4的数组 /a数组的数组元素又是引用类型 a = new int4; /把a数组当成一维数组,遍历a数组的每个数组元素 for (int i = 0 , len = a.length; i len ; i+ ) System.out.println(ai); /程序执行到这里时,将输出四个null,系统赋的默认值 /这时还是一维数组 /*程序走到这里时的编译结果:*/ /初始化a数组的第一个元素 a0 = new int2 /系统会为第一个数组元素赋两个0 ,二维数组就是数组的数组这样理解吧 /访问a数组的第一个元素所指数组的第二个元素 (可以理解为数组的数组) a01 = 6; /这时a数组的第一个元素所指数组的第一个元素为系统默认值0/*为了让大家更直接的理解和明白我就忽略下格式吧,把编译结果,放上来,请大家谅解下。*/ /a数组的第一个元素是一个一维数组,遍历这个一维数组 for (int i = 0 , len = a0.length ; i len ; i + ) System.o
3、ut.println(a0i); /这里还是要提醒大家,数组的下标是从0开始的 /*程序走到这里时的编译结果:*/ /同时动态初始化二维数组的2个维数 int b = new int34; /使用静态初始化的语法来初始化一个二维数组 String str1 = new String new String3,new Stringhello; /使用简化的静态初始化语法来初始化二维数组 String str2 = new String3,new Stringhello; System.out.println(使用静态初始化定义的二维数组:+str110); System.out.println(使用简化初始给定义的二维数组:+str210); 整个程序的编译结果:下面详细说明下,程序代码的运行过程:这段代码(for (int i = 0; i a.length ; i+) System.out.println(ai); )上面代码把a 这个二维数组当成一维数组处理,只是每个数组元素都是null,所以我们看到输出结果都是null。程序int a;,将在栈内存中定义一个引用变量,这个变量并未指
4、向任何有效的内存空间,此时的堆内存中还未为这行代码分配任何存储区。程序对a数组执行初始化:a = new int3; , 这行代码为让a变量指向一块长度为3的数组内存,这个长度为3数组里每个数组元素都是引用类型(数组类型),系统为这些数组元素分配默认初始值-null,内存图如下:因为a数组的元素必须是int数组,所以接下来的程序对a0元素执行初始化,使右边堆内存中第一个数组元素指向一个有效的数组内存,指向一个长度为2的int 数组。 因为程序采用动态初始化a0数组,因此系统将为a0的每个数组元素分配默认初始值:0,然后程序再显式为a0数组的第二个元素赋值为6,内存图如下:灰色覆盖的数组元素就是程序显式指定的数组元素值。然后接着迭代输出a0数组的每个数组元素,将会输出0(这个因为程序员没有显式指定值,所以是系统默认的值)和6。我们知道,初始化多维数组时,可以只指定最左边维的大小;当然,也可以一次指定每一维的大小。/int b = new int34;这时定义了一个b数组变量,这个数组变量指向一个长度为3的数组,这个数组的每个数组元素又是一个数组类型,它们各指向对应的长度为4的int数组,
《深入理解JAVA数组》由会员夏**分享,可在线阅读,更多相关《深入理解JAVA数组》请在金锄头文库上搜索。
学年工作安排三篇
年产xx立方米氢能项目可行性报告【模板范文】
年产3万吨电子级氢氟酸项目商业计划书写作模板
专业电子病历与His电子病历的区别
vf考试国家试题库题目(75)
兰州大学21秋《计算机组成原理》在线作业一答案参考85
京南航高食堂餐饮企业劳务派遣招标文件
电商创业工作室创业计划书2
二十世纪后教育的发展特征
中学生关于狼图腾读书心得500字6篇
互联网公司合作协议最新整理版
江苏省金坛市建昌中学九年级化学 每天5分钟练习(11)(无答案) 新人教版
微分方程应用问题案例
后勤职责后勤职(八篇)
《公顷和平方千米》教学设计--叶青
焊工考试题及答案
2023年(必备)小学教学工作计划汇总五篇(学校教学计划小学)
内科护理工作总结(2篇).doc
生产调度管理知识
2023行政部门下半年工作计划例文(三篇).doc
2023-09-10 7页
2022-08-25 23页
2022-10-03 2页
2023-01-14 8页
2023-10-01 7页
2022-12-17 4页
2023-09-29 2页
2023-11-16 8页
2023-06-29 6页
2022-10-10 5页