Java程序设计基础 课件 第4章 Java数组与字符串.pptx

Java程序设计基础 课件 第4章 Java数组与字符串.pptx

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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对二维数组的处理方式是将二维数组看成多个一维数组的一维数组。

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档