




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第4章章 数组、向量和字符串数组、向量和字符串 数组数组数组说明数组说明 数组是一系列的匿名变量,数组中的元素可通数组是一系列的匿名变量,数组中的元素可通过下标来访问过下标来访问 在在Java中,数组是对象。类中,数组是对象。类Object中定义的方中定义的方法都可以用于数组对象。可以说明任何类型的法都可以用于数组对象。可以说明任何类型的数组,基本类型,类类型,数组等。数组在使数组,基本类型,类类型,数组等。数组在使用之前必须先说明用之前必须先说明 一维数组的定义一维数组的定义type arrayName;变量名后接方括号;将方括号放到变量名变量名后接方括号;将方括号放到变量名的左面。如下所
2、示:的左面。如下所示:char s ;int intArray ;Date dateArray ;Point points ;type arrayNametype arrayName;创建数组创建数组 静态初始化和动态初始化静态初始化和动态初始化 静态初始化就是在定义数组的同时对数组元素静态初始化就是在定义数组的同时对数组元素进行初始化进行初始化 静态初始化可用于任何元素类型,初值块中每个位静态初始化可用于任何元素类型,初值块中每个位置的每个元素对应一个引用。置的每个元素对应一个引用。 动态初始化是使用运算符动态初始化是使用运算符newnew为数组分配空间。为数组分配空间。数组说明的方括号中的
3、数字表示数组元素个数数组说明的方括号中的数字表示数组元素个数静态初始化静态初始化int intArray =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 = new typearraySizetype arrayName = new typearraySizes = new char20;复合类型的数组复合类型的数组
4、 复合类型的数组需要经过两步进行空间分复合类型的数组需要经过两步进行空间分配配 使用运算符使用运算符new只是为数组本身分配空间,并只是为数组本身分配空间,并没有对数组的元素进行初始化没有对数组的元素进行初始化 第一步先创建数组本身:第一步先创建数组本身: type arrayName = new typearraySize;第二步分别创建各个数组元素第二步分别创建各个数组元素: : arrayName0 = new type(paramList); arrayNamearraySize-1 = new type(paramList); 复合类型的数组复合类型的数组数组说明与创建关系数组说明与
5、创建关系 Point类类 class Pointclass Point int x, y;int x, y;Point ( int x1, int y1)Point ( int x1, int y1) x = x1;x = x1;y = y1;y = y1; Point()Point() this(0, 0);this(0, 0); 数组说明与创建关系数组说明与创建关系points(a)pointsLength:100(b)pointsLength:100X:Y:(c)Point points;执行完毕,系统为变量points分配一个引用空间 points = new Point 100;执行
6、完毕,系统在内存中分配一个数组对象并把数组引用赋给变量points points1 = new Point (); 数组说明注意数组说明注意数组变量的类型可以指向它的父类数组变量的类型可以指向它的父类 正确正确 错误错误Object points;points = new Point 100;Point points;points = new Object 100;数组边界数组边界 数组下标从数组下标从0开始,开始,元素个数元素个数length是数组是数组类中唯一的数据成员变量类中唯一的数据成员变量 new创建数组时系统自动给创建数组时系统自动给length赋值赋值 数组一旦创建完毕,其大小就
7、固定下来数组一旦创建完毕,其大小就固定下来 程序运行时可以使用程序运行时可以使用length进行数组边界检查。进行数组边界检查。如果发生越界访问,则抛出一个异常如果发生越界访问,则抛出一个异常数组边界例数组边界例int list = new int 10;for (int i = 0; i list.length; i+) / 进行相应处理的代码进行相应处理的代码循环的结束条件中使用循环的结束条件中使用list.length,而不是常数,而不是常数10。这。这样做不会引起数组下标越界,样做不会引起数组下标越界,使程序更健壮,修改更方便。使程序更健壮,修改更方便。数组元素的引用数组元素的引用 数
8、组名加上下标数组名加上下标, 引用方式为引用方式为: : index为数组下标,下标从为数组下标,下标从0开始,一直到开始,一直到length-1 下标是整型常数或表达式下标是整型常数或表达式 程序程序4-14-1设给定一组整型数,求它们的平均值设给定一组整型数,求它们的平均值 arrayNameindex arrayName1, arrayNamei, arrayName6*i多维数组多维数组 多维数组的定义多维数组的定义 Java中没有真正的多维数组,可以建立数组的中没有真正的多维数组,可以建立数组的数组(的数组数组(的数组),由此得到多维数组),由此得到多维数组 n维数组是维数组是n-1
9、维数组的数组维数组的数组 说明多维数组时使用类型及多对方括号说明多维数组时使用类型及多对方括号二维数组二维数组 二维数组的定义方式:二维数组的定义方式: 与一维数组一样,定义对数组元素也没有与一维数组一样,定义对数组元素也没有分配内存空间,要使用运算符分配内存空间,要使用运算符new来分配内来分配内存,然后才可以访问每个元素存,然后才可以访问每个元素type arrayName type arrayName多维数组的初始化多维数组的初始化 静态初始化静态初始化 在定义数组的同时为数组分配空间在定义数组的同时为数组分配空间 动态初始化动态初始化 直接为每一维分配空间直接为每一维分配空间 从最高维
10、起(而且必须从最高维开始),分别从最高维起(而且必须从最高维开始),分别为每一维分配内存为每一维分配内存 int intArray = 2,3, 1,5, 3,4; 数组intArray为一个3行2列的数组,它的形式如下:2 31 53 4type arrayN = new type arrleng1 ;arrayN 0 = new type arrleng2;arrayN 1 = new type arrleng2;.arrayN arrleng1 - 1 = new type arrleng2; type arrayName = new typearraylength1arraylengt
11、h2例如:int a = new int23; 二维数组二维数组例一例一 int twoDim = new int 4 ; twoDim0 = new int5; twoDim1 = new int5; 二维数组二维数组例二例二String s =new String2 ;s0 = new String2;s1 = new String3;s00 = new String(“Good”);s01 = new String(“Luck”);s10 = new String(“to”);s11 = new String(“you”);s12 = new String(“!”); 非矩阵数组非矩阵数
12、组int twoDim = new int 4 ;twoDim0 = new int2;twoDim1 = new int4;twoDim2 = new int6;twoDim3 = new int8; X XX X X XX X X X X X X X X X X X X XtwoDim数组为4行,每行的元素个数分别为2,4,6,8个 矩阵数组矩阵数组二维矩阵数组的一般说明格式为:二维矩阵数组的一般说明格式为: arrayName是数组名,是数组名,length1和和length2分别为分别为数组各维的大小,数组各维的大小,type是数组元素的类型。是数组元素的类型。type arrayNa
13、me = new type length1length2;二维矩阵数组int matrix = new int 45;将创建一个有4个一维数组的数组,每个一维数组中又有5个整数,即4行5列的整数矩阵。该行等价于下列这段代码:int matrix = new int 4 ;for (int j = 0; j matrix.length; j+)matrixj = new int5; 多维数组说明多维数组说明正确的声明:int a1 = new int 23;int a2 = new int 2; int a3 = new int 46; 错误的说明:int errarr123;int errar
14、r2 = new int 4 ;int errarr34 = new int 34; 不允许说明不允许说明静态数组静态数组 说明顺序应从说明顺序应从高维到低维高维到低维 数组维数的指定数组维数的指定只能出现在只能出现在new运算符之后运算符之后 多维数组的引用多维数组的引用 二维数组引用方式为: arrayNameindex1index2例如:int myTable = new int43;myTable00 = 34;myTable01 = 15;myTable02 = 26; 多维数组的引用例多维数组的引用例int myTable = 23, 45, 65, 34, 21, 67, 78,
15、46, 14, 18, 46, 98, 63, 88,98, 81, 64, 90, 21, 14, 23,54, 43, 55, 76, 22, 43, 33; for (int row=0;row4; row+) for (int col=0;col7; col+) System.out.print(myTablerowcol + );System.out.println(); 0123456023456534216778146141846986388298816490211423354435576224333多维数组的引用例多维数组的引用例计算表中各行元素之和并查找其值最大的那个行 程序
16、4-2 lengthlength属性属性 多维数组的length属性只返回第一维的长度 int ages47; ages.length;/ 返回4,而不是28 可以分别存取每一维的长度,如:int ages = int ages47;int firstArray = ages0;ages.length * firstArray.length; / 返回 28Arrays类常用的方法类常用的方法 int binarySearch(type a, type key) 对关键字key在数组a中进行二分查找,但要求数组a必须已经排序,否则返回值无意义 boolean equals(type a, ty
17、pe a2) 它判定两个数组大小是否相同,并且每一个元素是否相等。两个null数组是相等的数组复制数组复制 Java方法arraycopy() class ArrayTestpublic static void main(String args) int elements = 1, 2, 3, 4, 5, 6 ;int hold = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ;System.arraycopy(elements, 0, hold, 0, elements.length); Vector类类 对应于类似数组的顺序存储的数据结构,允许不同类型的元素共存于一个变长数
18、组中,可以看作是把不同类型元素按照动态数组进行处理 可以看作是一个可变大小的数组 用一个整数类型的次序值来访问 增加或删除了元素,大小也变大或变小 概述概述 适合情况 需要处理的对象数目不定,序列中的元素都是对象或可以表示为对象; 需要将不同类的对象组合成一个数据序列; 需要做频繁的对象序列中元素的插入和删除; 经常需要定位序列中的对象和其他查找操作; 在不同的类之间传递大量的数据; Vector类类elementData 存放数据元素 elementCount 记录Vector中元素的实际个数 capacityIncrement 容量增值 Vector构造方法构造方法public Vecto
19、r() 构造一个空向量public Vector(int initialCapacity) 以初始存储容量initialCapacity构造一个空的向量Vectorpublic Vector(int initialCapacity, int capacityIncrement) 以初始存储容量initialCapacity和容量增量capacityIncrement构造一个空的向量Vector例如:Vector MyVector = new Vector(100, 50);Vector类的操作类的操作 元素的添加 addElement(Object obj):将新元素添加到序列尾部 inser
20、tElementAt(Object obj, int index):将指定对象obj插入到指定位置index处 Vector MyVector = new Vector();for (int i=1;i=10;i+)MyVector.addElement(new Random(); MyVector.insertElementAt(middle,5); 元素的删改元素的删改setElementAt(Object obj, int index) 将向量序列index位置处的对象元素设置为objremoveElement(Object obj) 删除第一个与指定的obj对象相同的元素,将后面的元素
21、前提,补上空位removeElementAt(int index) 删除index指定位置处的元素,同时将后面的元素前提removeAllElements() 清除向量序列中的所有元素,向量的大小置为0删除修改实例删除修改实例Vector MyVector = new Vector(100);for (int i=0;i10;i+)MyVector.addElement(“welcome”);MyVector.addElement(“to”);MyVector.addElement(“beijing”); while (MyVector.removeElement(“to”); 元素的查找元素
22、的查找Object elementAt(int index) 返回指定位置处的元素boolean contains(Object obj) 检查向量序列中是否包含指定的对象元素objint indexOf (Object obj, int start_index) 从指定的start_index位置开始向后搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若对象不存在,则返回-1int lastIndexOf(Object obj,int start_index) 从指定的start_index位置开始向前搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若对象不存在,
23、则返回-1Vector的其他方法的其他方法public final int size(): 返回向量中的元素数量public final boolean contains(Object elem): 判断对象elem是否在向量中public final int indexOf(Object elem): 从向量的第一个元素开始查找指定对象,并返回该对象的索引值(如果查找不成功则返回-1)Vector的其他方法的其他方法 capacity():返回Vector的容量;clone():建立Vector的备份;copyInto(Object):把Vector中的元素拷贝到一个数组中;firstEle
24、ment():返回第一个元素;lastElement():返回最后一个元素;isEmpty():判断是否为空;setSize(int size):设置Vector的大小;trimToSize():将Vector的容量下调至最小值 Vector类的使用举例类的使用举例 程序4-4 使用Vector类的方法,向向量增加不同类型的元素并输出Vector元素 字符串类型字符串类型 字符串 内存中连续排列的一个或多个字符String 处理不变字符串StringBuffer处理可变字符串字符串说明及初始化字符串说明及初始化 字符串常量 系统为程序中出现的字符串常量自动创建一个String对象 字符串变量 System.out.println(“This is a String”);将创建“This is a String”对象String s1;StringBuffer sb1;String s1 = new String();char chars = a, b, c;String s2 = new String( chars );String s3 = Hello World!; 字符串处理字符串处理String类类length() 返回字符串中的字符个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年03月山东今日莱阳报社公开招聘新闻记者1人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年03月中国地质科学院水文地质环境地质研究所第一批公开招聘应届毕业生15人(北京)笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 贵州省考试院2025年4月高三年级适应性考试地理试题及答案
- 柔印直接制版机项目安全评估报告
- 甘肃机电职业技术学院《汉语速录》2023-2024学年第二学期期末试卷
- 温州商学院《医药文献检索》2023-2024学年第二学期期末试卷
- 天津商务职业学院《第二外语(日、德)(2)》2023-2024学年第一学期期末试卷
- 沙洲职业工学院《幼儿语言教育与活动指导》2023-2024学年第二学期期末试卷
- 楚雄医药高等专科学校《专修健美操(2)》2023-2024学年第二学期期末试卷
- 西北大学现代学院《现场急救知识与技术》2023-2024学年第二学期期末试卷
- 技术经纪人(初级)考试试题(附答案)
- 2025年全国国家版图知识竞赛题库及答案(中小学组)
- 《国歌法》、《国旗法》主题班会
- 最全的L13J1建筑工程做法(共170页)
- 钢筋混凝土检查井技术交底
- GH2-B组合型电气火灾监控探测器安装使用说明书
- 单位公章使用登记表
- 解读电影《末路狂花》中的女性主义
- EDSS神经功能状况评估
- 县域医疗卫生次中心基本标准
- 建标 110-2021 综合医院建设标准
评论
0/150
提交评论