- 1、本文档共66页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第四章Java数组与字符串;
4.1数组;
(1)?a数组有10个元素,每个元素都是一个int变量,在内存中地址连续。
(2)数组的元素使用数组下标元素符[]标识,下标索引i从0开始,到9结束,a[i]是a数组的第i+1个数组元素,i必须在0~n-1之间(n是a数组的长度)。如果i=n或者i0,在Java中都属于越界行为,是不允许的,程序会终止运行并报异常。
(3)数组一旦定义长度n,就不可改变长度(数组的容量固定)。;
4.1.2数组的定义与初始化
1.?C语言的数组情况
Java的数组与C语言的具有很多不同,首先来看一下C语言中对数组的定义,例如定义一个数组为“inta[5];”,内存如图4-2所示。;
C语言数组的语法规则:
(1)?a是数组名,代表了这个数组的首地址,是一个不可改变的量,不能对a进行赋值。
(2)“inta[5];”定义之后,就可以对a数组的各个元素进行赋值和运算了。
(3)可以在定义的时候整体赋值,即“inta[5]={1,2,3,4,5};”,而定义之后就只能够对数组的单个元素进行赋值操作。
(4)?C语言对于数组的下标越界的处理态度是“后果自负”。;
2.?Java的数组情况
Java的数组定义语句为
int[]a=newint[5];
(1)等号左边定义了一个整数数组类型(int[]视为一个类型)的变量a。a是数组名,同时a的本质是一个引用变量,类似于一个能够指向整数数组的指针变量。既然是变量,就可以对a进行赋值操作,让它指向另外一个整数数组,即“a=b;”。
(2)等号右边使用new在内存中分配了一段空间,即5*4→20字节,a就指向该内存空间的首地址。;
(3)?Java在定义a数组的时候也可以使用花括号进行数组的初始化:
int[]b={1,2,3,4,5}; //根据花括号里面的值,b的长度为5
(4)整体赋值只能发生在定义的时候,定义语句之后就只能对b的单个元素进行赋值。
(5)该数组在内存中的情况与上述C语言的一致,如图4-2所示。;
3.栈内存与堆内存
Java中定义一个数组会在内存中两个区域进行操作,一个区域是栈内存,保存了引用变量a;另一个区域是堆内存,保存了数组的实际元素集合,如图4-3所示。
1)栈内存
当函数被调用时,函数进入栈内存空间,即函数得到分配的内存空间。栈内存空间具有栈的特性:先进后出,后进先出。main函数是程序入口,最先进栈,被压入栈底;如果main函数调用fun函数,则fun函数进栈,压在main函数上面;只有fun函数运行结束后出栈了,main函数才能继续运行,直到运行结束后退栈(即释放函数得到栈内存空间)。;;
2)堆内存
在C语言中也有堆内存的概念。在标准C语言中,使用malloc等内存分配函数从堆内存中获取内存空间,从堆中分配的内存需要程序员手动释放,如果不释放,而系统内存管理器又不自动回收这些内存空间,这样很容易产生内存溢出的情况。
Java中同样也有堆内存的概念,Java定义的对象、数组等存放在堆内存空间中。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的。Java的堆内存是由Java的垃圾回收机制*来负责的,Java的垃圾收集器会自动收走这些不再使用的数据,释放内存。其缺点是由于要在运行时动态管理内存,需要消耗一定的资源,对程序速度有一定影响。;
;
程序结果:;
4.1.3数组遍历
1.数组的遍历
数组的遍历即对数组的每个元素访问一次,这是数组最常见的操作,一般是用for循环进行,采用三个表达式的形式,i从0开始步进变化到n-1。;
;
程序结果:;
程序示例4-3对程序示例4-1进行改造,将上述程序的功能写成一个函数。
函数的功能是对传入的整数数组找寻最大值及下标,由main函数初始化数组,将数组传入该函数,调用该函数完成寻找最大值及下标的功能。我们都知道函数只能返回一个值,如何让一个函数传回两个及以上的值给调用函数呢?方法是再将一个数组传入该函数,作为结果数组,将函数找到的多个值赋值给该数组的多个元素即可,如图4-4所示。;
;
具体的内存示意图如图4-5所示,该图是main函数调用fun函数的内存瞬时示意图。;
程序结果:;
2.?foreach语法
对数组进行遍历,除了常规的for循环之外,还有一种较为简洁的foreach写法,例如要输出a数组的数组元素,写法如下:;
4.1.4二维数组
Java对二维数组的处理方式是将二维数组看成多个一维数组的一维数组。
您可能关注的文档
- 3dsMax+VRay+Photoshop室内效果图制作项目教程 第2版 课件全套 孙琪 1--4 ds Max实体建模应用 ---古香古色设计风格制作.pptx
- Java程序设计基础 课件 第1章 Java概述.pptx
- Java程序设计基础 课件 第2章 Java语言基础.pptx
- Java程序设计基础 课件 第3章 Java面向过程编程.pptx
- Java程序设计基础 课件 第5章 Java类与对象.pptx
- Java程序设计基础 课件 第6章 Java继承与抽象类.pptx
- Java程序设计基础 课件 第7章 多态与接口.pptx
- Java程序设计基础 课件 第8章 异常处理.pptx
- Java程序设计基础 课件 第9章 Java输入输出.pptx
- Java程序设计基础 课件 第10章 Java常用类介绍.pptx
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)