java2008_ch04数组字符串向量和哈希表.ppt
《java2008_ch04数组字符串向量和哈希表.ppt》由会员分享,可在线阅读,更多相关《java2008_ch04数组字符串向量和哈希表.ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java程序设计程序设计ProgramminginJava谷勇浩谷勇浩北京邮电大学北京邮电大学计算机学院计算机学院第第4章章数组、字符串、向量与哈希表数组、字符串、向量与哈希表本章内容概要本章内容概要当需要处理当需要处理大量数据大量数据时,可以考虑利用数组或向时,可以考虑利用数组或向量。量。数组数组元素的元素的个数个数在数组对象创建之后在数组对象创建之后不能改变不能改变向量向量元素的元素的个数个数可以动态发生可以动态发生变化变化,但需要一定时间,但需要一定时间利用利用HashHash表表可以可以提高提高访问或查找元素的访问或查找元素的效率效率,但,但是需要较大的是需要较大的空间代价空间代价。字
2、符串和字符串缓冲区都可以包含字符序列,但字符串和字符串缓冲区都可以包含字符序列,但都不是字符数组。都不是字符数组。任何一种类型的数据都可以转化成字符串,而且任何一种类型的数据都可以转化成字符串,而且字符字符串对象串对象一旦创建,其所包含的字符序列就一旦创建,其所包含的字符序列就不能发生变不能发生变化化。如果需要频繁如果需要频繁改变字符序列改变字符序列,可采用,可采用字符串缓冲区字符串缓冲区,从而提高字符序列的处理效率。从而提高字符序列的处理效率。本章总体纲要本章总体纲要数组数组字符串字符串字符串缓冲区字符串缓冲区向量向量哈希表哈希表数组数组数组类型是一种数组类型是一种引用数据类型引用数据类型,
3、它是由相,它是由相同类型的若干项同类型的若干项数据数据组成,同时包括成员组成,同时包括成员域域length(表示数组长度)。(表示数组长度)。例如例如:publicstaticvoidmain(Stringargs)其中其中args是是String类型的数组类型的数组占用连续的内存地址占用连续的内存地址数组的静态性数组的静态性一旦创建就不能修改数组的长度一旦创建就不能修改数组的长度一维数组声明一维数组声明一维数组变量的声明格式有如下两种一维数组变量的声明格式有如下两种:(1)数组元素的数据类型数组元素的数据类型变量名变量名;(2)数组元素的数据类型数组元素的数据类型变量名变量名;示例示例:in
4、tc;Stringnames;intc;Stringnames;一维数组创建对象一维数组创建对象数组对象的数组对象的两种创建形式:两种创建形式:new数组元素的数据类型数组元素的数据类型数组元素的个数数组元素的个数;charc=newchar5;数组元素的数据类型数组元素的数据类型变量名变量名数组元素数组元素1,数组元素,数组元素2,数组元素,数组元素n;charc=a,b,c,d,e;示例示例intc=newint12;c是数组名是数组名如何获得数组的长度如何获得数组的长度?c.length第一个数组元素的下标为第一个数组元素的下标为0使用数组可以通过数组名与下标使用数组可以通过数组名与下标
5、每个数组元素类似于普通的变量每个数组元素类似于普通的变量c0=3;c0+=5;-45-456 60 0727215431543-89-890 06262-3-31 16453645378781212c 1 c 1 c 2 c 2 c 4 c 4 c 3 c 3 c 5 c 5 c 6 c 6 c 7 c 7 c 8 c 8 c 9 c 9 c 10 c 10 c 11 c 11 c 0 c 0 c.length下标下标有时也称为索引有时也称为索引必须是整数或整数表达式必须是整数或整数表达式,例如例如:c11示例示例:含有运算符的下标表达式含有运算符的下标表达式:if(x=3)t=(c5-2=c
6、3)&(cx=c3);/t=true内存分配内存分配Java数组实际上也是数组实际上也是对象对象,所以可通过,所以可通过new关关键字来创建键字来创建示例示例:intc;/声明声明c=newint12;/创建对象,并分配内存创建对象,并分配内存声明时不必指定数组的大小声明时不必指定数组的大小上面的两个语句可以简化成一个语句上面的两个语句可以简化成一个语句intc=newint12;或者或者intc=45,6,0,72,1543,-89,0,62,-3,1,6453,78数组元素的默认值及初始化数组元素的默认值及初始化基本数据类型的元素默认值为基本数据类型的元素默认值为0或或false引用数据类
7、型的元素默认值为引用数据类型的元素默认值为null可以采用循环结构初始化数组可以采用循环结构初始化数组示例示例:doublesquares;squares=newdouble100;for(inti=0;isquares.length;i+)squaresi=i*i;通过初始化语句创建数组通过初始化语句创建数组Java语言允许通过数组的初始化语句创语言允许通过数组的初始化语句创建数组建数组示例示例:intn=10,20,30,40,50;上面语句创建了一个含有五个元素的数组上面语句创建了一个含有五个元素的数组下标值分别为下标值分别为0,1,2,3,4这时不需要运算符这时不需要运算符new注意事
8、项注意事项当通过循环遍历数组时当通过循环遍历数组时下标永远不要低于下标永远不要低于0下标永远要比数组元素个数小下标永远要比数组元素个数小当数组下标出错,当数组下标出错,Java产生产生ArrayIndexOutOfBoundsExceptionJava抛出异常抛出异常在第在第6章讲解章讲解多维数组多维数组最常用的多维数组是二维数组最常用的多维数组是二维数组inta=newint34;二维数组可以理解成如下图示的表格二维数组可以理解成如下图示的表格a 0 0 a 0 0 a 1 0 a 1 0 a 2 0 a 2 0 a 0 1 a 0 1 a 1 1 a 1 1 a 2 1 a 2 1 a 0
9、 2 a 0 2 a 1 2 a 1 2 a 2 2 a 2 2 a 0 3 a 0 3 a 1 3 a 1 3 a 2 3 a 2 3 行的下标值行的下标值列的下标值列的下标值示例示例1类似于一维数组进行二维数组的声明、创建类似于一维数组进行二维数组的声明、创建(内存分配内存分配)与初始化与初始化示例示例:classJ_FillArraypublicstaticvoidmain(Stringargs)intmatrix=newint45;for(introw=0;row4;row+)for(intcol=0;col5;col+)matrixrowcol=row+col;/内部内部for循环结
10、束循环结束/外部外部for循环结束循环结束/方法方法main结束结束/类类J_FillArray结束结束示例示例2通过初始化语句创建数组通过初始化语句创建数组示例示例:doublec=1.0,2.0,3.0,4.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0;注意事项注意事项JavaJava的多维数组实际上是的多维数组实际上是数组的数组数组的数组即创建以数组为元素的数组即创建以数组为元素的数组意味着意味着:二维数组的每一行可以具有不同的二维数组的每一行可以具有不同的列数列数示例示例:intint a ;a ;a=a=new intnew int 3 ;3 ;/allocat
11、e rows/allocate rowsa 0 =a 0 =new intnew int 3;3;/allocate row 0/allocate row 0a 1 =a 1 =new intnew int 2;2;/allocate row 1/allocate row 1a 2 =a 2 =new intnew int 3;3;/allocate row 2/allocate row 2a.length a.length 行数行数a i.length a i.length 第第i i行列数行列数三维数组三维数组思维的扩展思维的扩展:一维数组一维数组二维数组二维数组三维数组三维数组示例示例:
12、class J_Fill3DArray public static void main(String args)int M=new int453;for(int row=0;row 4;row+)for(int col=0;col 5;col+)for(int ver=0;ver=0;c-)dest.append(source.charAt(c);returndest.toString();insert和和delete方法方法9种种insert方法方法允许将各种数据插到允许将各种数据插到StringBuffer对象的指对象的指定位置定位置方法方法delete(intstart,intend)和
13、和deleteCharAt(intindex)允许删除允许删除StringBuffer对象中的指定字符对象中的指定字符字符串例程字符串例程String和和StringBuffer是两种不同的类是两种不同的类不能用字符串不能用字符串(String)的实例对象调用类的实例对象调用类(StringBuffer)的成员方法的成员方法反之亦然反之亦然StringStringBuffer采用采用StringBuffer构造方法构造方法newStringBuffer(StringmyString);StringBufferString采用采用String构造方法构造方法newString(StringBuf
14、ferbuffer)采用采用StringBuffer的成员方法的成员方法toString()String和和StringBufferJ_StringBuffer.javaExample4_1.javaExample4_2.javaExample4_3.java本章总体纲要本章总体纲要数组数组字符串字符串字符串缓冲区字符串缓冲区向量向量哈希表哈希表向量向量向量向量在功能上与在功能上与数组数组类似,只是数组对象的长类似,只是数组对象的长度在数组对象创建之后不能改变,而向量元度在数组对象创建之后不能改变,而向量元素的个数可以素的个数可以改变改变,同时,同时向量元素向量元素的数据类的数据类型必须是型必
15、须是引用类型引用类型。向量向量的的基本原理基本原理:预先给向量对象分配一定的:预先给向量对象分配一定的存储空间,然后给向量对象添加元素或设置存储空间,然后给向量对象添加元素或设置元素值。元素值。向量对象的向量对象的容量容量:向量对象存储空间的大小:向量对象存储空间的大小(单位:元素个数),容量可根据向量长度(单位:元素个数),容量可根据向量长度的变化动态变化。的变化动态变化。(新容量计算方法新容量计算方法p147)p147)向量对象的向量对象的长度长度:向量对象中实际元素的个数。:向量对象中实际元素的个数。向量向量向量所对应的类是类向量所对应的类是类java.util.Vectorjava.u
16、til.Vector向量变量的声明格式向量变量的声明格式Vector变量名变量名;示例示例Vectorvs;“向量元素的数据类型向量元素的数据类型”必须指定,否则编译告警。必须指定,否则编译告警。创建向量实例对象创建向量实例对象/创建元素类型为字符串的向量对象创建元素类型为字符串的向量对象Vectorvs=newVector();/创建元素类型为创建元素类型为Object类型的向量对象类型的向量对象Vectorvo=newVector();上述两种情况的初始容量和容量增量的默认值分别为上述两种情况的初始容量和容量增量的默认值分别为10和和0。/创建向量对象,初始容量为创建向量对象,初始容量为i
17、nitialCapacity,容量增量为,容量增量为capacityIncrementpublicVector(intinitialCapacity)publicVector(intinitialCapacity,intcapacityIncrement)向量对象的操作向量对象的操作增加元素增加元素成员方法:成员方法:add/addElement/insertElementAt修改元素修改元素成员方法:成员方法:set/setElementAt删除元素删除元素成员方法:成员方法:clear/remove/removeElement/removeElementAt/.信息查询信息查询成员方法:成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java2008_ch04 数组 字符串 向量 哈希表
限制150内