数组、向量和字符串.ppt_第1页
数组、向量和字符串.ppt_第2页
数组、向量和字符串.ppt_第3页
数组、向量和字符串.ppt_第4页
数组、向量和字符串.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章数组 向量和字符串 数组 数组说明数组是一系列的匿名变量 数组中的元素可通过下标来访问在Java中 数组是对象 类Object中定义的方法都可以用于数组对象 可以说明任何类型的数组基本类型 类类型 数组等数组在使用之前必须先说明 一维数组的定义 typearrayName 变量名后接方括号将方括号放到变量名的左面 chars intintArray DatedateArray Pointpoints type arrayName 创建数组 静态初始化和动态初始化静态初始化就是在定义数组的同时对数组元素进行初始化静态初始化可用于任何元素类型 初值块中每个位置的每个元素对应一个引用 动态初始化是使用运算符new为数组分配空间 数组说明的方括号中的数字表示数组元素个数 静态初始化 intintArray 1 2 3 4 int ages 34 12 45 double heights 84 124 78 2 61 5 boolean tired true false false true String names Zhang Li Wang 动态初始化 type arrayName newtype arraySize typearrayName newtype arraySize s newchar 20 复合类型的数组 复合类型的数组需要经过两步进行空间分配使用运算符new只是为数组本身分配空间 并没有对数组的元素进行初始化第一步先创建数组本身 typearrayName newtype arraySize 第二步分别创建各个数组元素 arrayName 0 newtype paramList arrayName arraySize 1 newtype paramList 复合类型的数组 points newPoint 100 points 0 newPoint points 1 newPoint points 99 newPoint stringstringArrar stringArray newString 3 stringArray 0 newString how stringArray 1 newString are Java中没有静态的数组定义 内存都是通过new动态分配的 intintArray 5 是错误的 数组说明与创建关系 Point类classPoint intx y Point intx1 inty1 x x1 y y1 Point this 0 0 数组说明与创建关系 points a points Length 100 b points Length 100 X Y c Point points 执行完毕 系统为变量points分配一个引用空间 points newPoint 100 执行完毕 系统在内存中分配一个数组对象并把数组引用赋给变量points points 1 newPoint 数组说明注意 数组变量的类型可以指向它的父类正确错误 Object points points newPoint 100 Point points points newObject 100 数组边界 数组下标从0开始 元素个数length是数组类中唯一的数据成员变量new创建数组时系统自动给length赋值数组一旦创建完毕 其大小就固定下来程序运行时可以使用length进行数组边界检查 如果发生越界访问 则抛出一个异常 数组边界例 intlist newint 10 for inti 0 i list length i 进行相应处理的代码 循环的结束条件中使用list length 而不是常数10 这样做不会引起数组下标越界 使程序更健壮 修改更方便 数组元素的引用 数组名加上下标 引用方式为 index为数组下标 下标从0开始 一直到length 1下标是整型常数或表达式程序4 1设给定一组整型数 求它们的平均值 arrayName index arrayName 1 arrayName i arrayName 6 i 多维数组 多维数组的定义Java中没有真正的多维数组 可以建立数组的数组 的数组 由此得到多维数组n维数组是n 1维数组的数组说明多维数组时使用类型及多对方括号 二维数组 二维数组的定义方式 与一维数组一样 定义对数组元素也没有分配内存空间 要使用运算符new来分配内存 然后才可以访问每个元素 typearrayName type arrayName 多维数组的初始化 静态初始化在定义数组的同时为数组分配空间动态初始化直接为每一维分配空间从最高维起 而且必须从最高维开始 分别为每一维分配内存 intintArray 2 3 1 5 3 4 数组intArray为一个3行2列的数组 它的形式如下 231534 typearrayName newtype arraylength1 arraylength2 例如 inta newint 2 3 typearrayN newtype arrleng1 arrayN 0 newtype arrleng2 arrayN 1 newtype arrleng2 arrayN arrleng1 1 newtype arrleng2 二维数组例一 inttwoDim newint 4 twoDim 0 newint 5 twoDim 1 newint 5 二维数组例二 Strings newString 2 s 0 newString 2 s 1 newString 3 s 0 0 newString Good s 0 1 newString Luck s 1 0 newString to s 1 1 newString you s 1 2 newString 非矩阵数组 inttwoDim newint 4 twoDim 0 newint 2 twoDim 1 newint 4 twoDim 2 newint 6 twoDim 3 newint 8 XXXXXXXXXXXXXXXXXXXXtwoDim数组为4行 每行的元素个数分别为2 4 6 8个 矩阵数组 二维矩阵数组的一般说明格式为 arrayName是数组名 length1和length2分别为数组各维的大小 type是数组元素的类型 typearrayName newtype length1 length2 二维矩阵数组 intmatrix newint 4 5 将创建一个有4个一维数组的数组 每个一维数组中又有5个整数 即4行5列的整数矩阵 该行等价于下列这段代码 intmatrix newint 4 for intj 0 j matrix length j matrix j newint 5 多维数组说明 正确的声明 inta1 newint 2 3 inta2 newint 2 int a3 newint 4 6 错误的说明 interrarr1 2 3 interrarr2 newint 4 interrarr3 4 newint 3 4 不允许说明静态数组 说明顺序应从高维到低维 数组维数的指定只能出现在new运算符之后 多维数组的引用 二维数组引用方式为 arrayName index1 index2 例如 intmyTable newint 4 3 myTable 0 0 34 myTable 0 1 15 myTable 0 2 26 多维数组的引用例 intmyTable 23 45 65 34 21 67 78 46 14 18 46 98 63 88 98 81 64 90 21 14 23 54 43 55 76 22 43 33 for introw 0 row 4 row for intcol 0 col 7 col System out print myTable row col System out println 多维数组的引用例 计算表中各行元素之和并查找其值最大的那个行程序4 2 length属性 多维数组的length属性只返回第一维的长度intages 4 7 ages length 返回4 而不是28可以分别存取每一维的长度 如 int ages intages 4 7 int firstArray ages 0 ages length firstArray length 返回28 Arrays类常用的方法 intbinarySearch typea typekey 对关键字key在数组a中进行二分查找 但要求数组a必须已经排序 否则返回值无意义booleanequals typea typea2 它判定两个数组大小是否相同 并且每一个元素是否相等 两个null数组是相等的 数组拷贝 Java方法arraycopy classArrayTest publicstaticvoidmain Stringargs intelements 1 2 3 4 5 6 inthold 10 9 8 7 6 5 4 3 2 1 System arraycopy elements 0 hold 0 elements length Vector类 对应于类似数组的顺序存储的数据结构 允许不同类型的元素共存于一个变长数组中 可以看作是把不同类型元素按照动态数组进行处理可以看作是一个可变大小的数组用一个整数类型的次序值来访问增加或删除了元素 大小也变大或变小 概述 适合情况 需要处理的对象数目不定 序列中的元素都是对象或可以表示为对象 需要将不同类的对象组合成一个数据序列 需要做频繁的对象序列中元素的插入和删除 经常需要定位序列中的对象和其他查找操作 在不同的类之间传递大量的数据 Vector类 elementData存放数据元素elementCount记录Vector中元素的实际个数capacityIncrement容量增值 Vector构造方法 publicVector 构造一个空向量publicVector intinitialCapacity 以初始存储容量initialCapacity构造一个空的向量VectorpublicVector intinitialCapacity intcapacityIncrement 以初始存储容量initialCapacity和容量增量capacityIncrement构造一个空的向量Vector例如 VectorMyVector newVector 100 50 Vector类的操作 元素的添加addElement Objectobj 将新元素添加到序列尾部insertElementAt Objectobj intindex 将指定对象obj插入到指定位置index处 VectorMyVector newVector for inti 1 i 10 i MyVector addElement newRandom MyVector insertElementAt middle 5 元素的删改 setElementAt Objectobj intindex 将向量序列index位置处的对象元素设置为objremoveElement Objectobj 删除第一个与指定的obj对象相同的元素 将后面的元素前提 补上空位removeElementAt intindex 删除index指定位置处的元素 同时将后面的元素前提removeAllElements 清除向量序列中的所有元素 向量的大小置为0 删除修改实例 VectorMyVector newVector 100 for inti 0 i 10 i MyVector addElement welcome MyVector addElement to MyVector addElement beijing while MyVector removeElement to 元素的查找 ObjectelementAt intindex 返回指定位置处的元素booleancontains Objectobj 检查向量序列中是否包含指定的对象元素objintindexOf Objectobj intstart index 从指定的start index位置开始向后搜索 返回所找到的第一个与指定对象obj相同的元素的下标位置 若对象不存在 则返回 1intlastIndexOf Objectobj intstart index 从指定的start index位置开始向前搜索 返回所找到的第一个与指定对象obj相同的元素的下标位置 若对象不存在 则返回 1 Vector的其他方法 publicfinalintsize 返回向量中的元素数量publicfinalbooleancontains Objectelem 判断对象elem是否在向量中publicfinalintindexOf Objectelem 从向量的第一个元素开始查找指定对象 并返回该对象的索引值 如果查找不成功则返回 1 Vector的其他方法 capacity 返回Vector的容量 clone 建立Vector的备份 copyInto Object 把Vector中的元素拷贝到一个数组中 firstElement 返回第一个元素 lastElement 返回最后一个元素 isEmpty 判断是否为空 setSize intsize 设置Vector的大小 trimToSize 将Vector的容量下调至最小值 Vector类的使用举例 程序4 4使用Vector类的方法 向向量增加不同类型的元素并输出Vector元素 字符串类型 字符串内存中连续排列的一个或多个字符String处理不变字符串StringBuffer处理可变字符串 字符串说明及初始化 字符串常量系统为程序中出现的字符串常量自动创建一个String对象字符串变量 System out println ThisisaString 将创建 ThisisaString 对象 Strings1 StringBuffersb1 Strings1 newString charchars a b c Strings2 newString chars Strings3 HelloWorld 字符串处理String类 length 返回字符串中的字符个数charAt intindex 返回字符串中index位置的字符toLowerCase 将当前字符串中所有字符转换为小写形式 字符串处理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论