电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

深入理解JAVA数组

7页
  • 卖家[上传人]:夏**
  • 文档编号:472371816
  • 上传时间:2023-01-14
  • 文档格式:DOC
  • 文档大小:216.51KB
  • / 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数组,

      5、每个数组元素的值为0。内存图如下:还可以使用静态初始化的方式来初始化二维数组,使用静态初始化来初始化二维数组时,二维数组的每个数组元素都是一维数组,因此必须指定多个一维数组作为二维数组的初始化值/使用静态初始化的语法来初始化一个二维数组String str1 = new String new String3,new Stringhello;内存图如下:最近总结为:二维数组是一维数组,其数组元素是一维数组;三维数组也是一维数组,其数组元素是二维数组;四维数组还是一维数组,其数组元素是三维数组数组应用在开发中的方方面面,我们开发时,记得要多查JDK文档 ,因为这是人类智慧的成果,里面包括了众多已经写好了的类。我们只管拿来主义就行。在写JDK工具类的应用之前,我相写下,普通二维数组的遍历方法,因为怕有些读者还没有理解,那就辛苦我一下了,只希望大家在读完这篇文章后,能给个好评,就满足了。我的文章都会结合代码和编译结果来说,这样一来可以看到代码是怎么写出来的,二来可以看到结果,必竟有个结果总比看不到结果强。看代码吧:public class Test /记住了,遍历二维数组会用到双层for循环

      6、public static void main(String args) /定义一个a数组,使用静态初始化 int a = new int 3,4,5,6,7,8,9,3,2,3,5,7; /行表示有几个大括号,列表示每个大括号里的内容 for(int i = 0; i a.length; i+) /获取行数功能 System.out.println(); /实现程序换行的功能 for(int j = 0; j ai.length; j+) /实现对每一行数组元素的依次输出 System.out.print(aij+ ); 编译结果:最后结合JDK,说下操作数组的工具类有哪些。JDK和JAVA提供的Arrays类里包含了一些static修饰方法可以直接操作数组,这个Arrays类里包含了如下几个static修饰的方法(static 修饰的方法可以直接通过类名来调用):看Arrays类的应用代码:这里Arrays类是人家已经写好的,是JAVA里的类库,所以我们用的时候一定要导入包名:import java.util.Arrays;public class ArraysTest /调用的方

      7、法:比较,复制,输出字符串,升序排序 public static void main(String args) /定义一个a数组,使用静态初始化 int a = new int3, 4 , 5, 6; / int a = new int4; 使用动态初始化也能比较 /但是用二维数组是无法比较的 /定义一个a2数组 int a2 = new int3,4,5,6; /int a2 = new int4; 使用动态初始化也能比较 /a数组和a2数组的长度相等,每个元素依次相等,将输出true System.out.println(a数组和a2数组是否相等: + Arrays.equas(a , a2);/* 在JDK文档里的解释可给大家看下:* public static boolean equals(int a, int a2)* 如果两个数组以相同顺序包含相同的元素,则两个数组是相等的*/通过复制a数组,生成一个新的b数组 int b = Arrays.copyOf(a, 6); /调用Arrays类里的copyOf 方法。 System.out.println(看看复制的数组,a数组

      8、和b数组是否相等: + Arrays.equals(a, b );/*/ /输出b数组的元素,将输出3, 4, 5, 6, 0, 0 System.out.println(b数组的元素为: + Arrays.toString(b); /输出a数组 System.out.println(a数组的元素为:+ Arrays.toString(a); /输出a2数组,也可以用for循环来依次输出结果 System.out.println(a2数组的元素为:+ Arrays.toString(a2); /将b数组的第3个元素(包括)到第5个元素(不包括)赋为1 Arrays.fill(b, 2, 4, 1); / 记住2和4指的是数组的索引值,是数组的下标是从0开始的 /输出b数组的元素,将输出3, 4, 1, 1, 0, 0 System.out.println(重新赋值后,b数组的元素为: + Arrays.toString(b);/*/再说明下,我这里放上程序的编译结果是为了大家更直观的理解内容,是忽略了一些格式的,所以大家在以后的开发中,一定要注意好格式。*/对b数组进行排序,这里用到的是升级排序法,可以查看JDK开发帮助文档。Arrays.sort

      《深入理解JAVA数组》由会员夏**分享,可在线阅读,更多相关《深入理解JAVA数组》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.