




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章数组、字符串、向量与哈希表,本章总体纲要,数组字符串字符串缓冲区向量哈希表,数组,由相同类型的若干项数据组成例如:publicstaticvoidmain(Stringargs)其中args是String类型的数组占用连续的内存地址数组的静态性一旦创建就不能修改数组的长度类似于动态数组的类型类Vector长度可以变大或缩小,数组声明,一维数组变量的声明格式有如下两种:(1)数组元素的数据类型变量名;(2)数组元素的数据类型变量名;示例:intc;Stringnames;intc;Stringnames;,内存分配,Java数组实际上也是对象,所以可通过new关键字来创建示例:intc;/声明c=newint12;/创建对象,并分配内存声明时不必指定数组的大小上面的两个语句可以简化成一个语句intc=newint12;,声明和初始化数组,声明数组typearrayName;或typearrayName;给数组分配内存(也叫初始化)arrayName=newtypesize;可以在同一条语句中对数组声明并初始化typearrayname=newtypesize;如何获得数组的长度?数组名.length,数组元素的初始化,基本数据类型的元素初始化为0值或false非基本数据类型的元素初始化为null可以采用循环结构初始化数组示例:doublesquares;squares=newdouble100;for(inti=0;isquares.length;i+)squaresi=i*i;,示例,使用数组可以通过数组名与下标每个数组元素类似于普通的变量c0=3;c0+=5;,下标,有时也称为索引必须是整数或整数表达式,例如:c11注:表达式可以是常数、变量、以及由常数、变量和运算符组成的式子,通过初始化语句创建数组,Java语言允许通过数组的初始化语句创建数组示例:intn=10,20,30,40,50;上面语句创建了一个含有五个元素的数组下标值分别为0,1,2,3,4这时不需要运算符new,注意事项,当通过循环遍历数组时下标永远不要低于0下标永远要比数组元素个数小当数组下标出错,Java产生ArrayIndexOutOfBoundsException,数组作为输入参数,数组可以作为方法的输入变量(形式参数)和返回值,在声明它们时必须用空括号,而且不能指定其大小。数组是引用类型,将其作为输入参数(即形参),在方法内对它的数据元素所作的改变将影响到方法外,publicclassAaaryParameterspublicstaticvoidchangeOrNot(inti,doublex)i=-1;x0=-2.0;doubley=x;y1=-3.0;doublez=-4,-4,-4;x=z;publicstaticvoidmain(Stringargs)intk=1;doubleA=1.0,2.0,3.0;changeOrNot(k,A);System.out.println(“k:+k);System.out.println(“A0:+A0);System.out.println(“A1:+A1);System.out.println(“A2:+A2);,运行结果:A0:-2.0A1:-3.0A3:3.0,多维数组,最常用的多维数组是二维数组inta=newint34;二维数组可以理解成如下图示的表格,行的下标值,列的下标值,示例1,类似于一维数组进行二维数组的声明、创建(内存分配)与初始化示例:classJ_FillArraypublicstaticvoidmain(Stringargs)intmatrix=newint45;for(introw=0;row4;row+)for(intcol=0;col5;col+)matrixrowcol=row+col;/内部for循环结束/外部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;,注意事项,Java的多维数组实际上是数组的数组即创建以数组为元素的数组意味着:二维数组的每一行可以具有不同的列数示例:inta;a=newint3;/allocaterowsa0=newint3;/allocaterow0a1=newint2;/allocaterow1a.length行数ai.length第i行列数,三维数组,思维的扩展:一维数组二维数组三维数组示例:classJ_Fill3DArraypublicstaticvoidmain(Stringargs)intM=newint453;for(introw=0;row4;row+)for(intcol=0;col5;col+)for(intver=0;ver3;ver+)Mrowcolver=row+col+ver;/内部for循环结束/for循环结束/外部for循环结束/方法main结束/类J_Fill3DArray结束,注意事项,Java允许数组的维数为:三、四、或更大但是,慎用高维数组甚至三维数组在实际的应用中也比较少出现,本章总体纲要,数组字符串字符串缓冲区向量哈希表,String的基本知识,String与C语言不同:字符(char)数组不是字符串(String)String数值不必以u0000结束,String直接量,String直接量双引号括起来的字符序列示例:“Hello”或“您好字符串赋值可以在声明时赋值Stringc=blue;c是String类型的变量blue是String直接量,String构造,类String共有11个构造方法,其中两个不被赞成使用(deprecated)参见docsindex.html,创建String对象常用的三种方法,String():初始化一个新的String对象Strings1=newString();s1=“您好”;String(Stringvalue):初始化一个新的String对象,使其包含与参数字符串相同的字符序列Strings2;s2=“您好”;以上两句常合并为一句:Strings2=“您好”;String(charvalue):分配一个新的String对象,使它代表字符数组参数包含的字符序列charc=您,好;Strings3=newString(c);,示例,/J_StringConstructors.java;开发者:雍俊海/字符串构造方法例程publicclassJ_StringConstructorspublicstaticvoidmain(Stringargs)Strings1=null;Strings2=newString();Strings3=您好!;Strings4=newString(s3);System.out.println(s1:+s1);System.out.println(s2:+s2);System.out.println(s3:+s3);System.out.println(s4:+s4);/方法main结束/类J_StringConstructors结束,练习:使用数组存储一个英文句子:“Javaisanobjectedorientedprogramminglanguage”,显示该句子,并算出每个单词的平均字母数。,问题分析:为了算出每个单词的平均字母数,需要把字符总数除以单词数,publicclassAverageCharacterspublicstaticvoidmain(Stringargs)Strings=“Java”,“is”,“an”,“object”,“oriented”,“programming”,“language”;intnumChars=0;for(inti=0;is.length;i+)System.out.print(si);numChars+=si.length();System.out.println();System.out.println(“Totalchars:+numChars);System.out.println(“Totalwords:+s.length);System.out.println(“Avg.chars:+(double)numChars/s.length);,String方法:length(),charAt()和getChars(),方法length()返回String的长度与数组不同之处:Strings不含有length成员域方法charAt(intindex)获得字符串指定位置的字符方法getChars(intsrcBegin,intsrcEnd,chardst,intdstBegin)拷贝字符串的部分字符序列到指定的字符数组的指定位置,字符串比较,字符串(String)比较字符类型的数据也是数值类型数据比较字符串大小,实际上就是依次比较其所包含的字符的数值大小小写字母与大小字母是不相同的,=运算符,当用于基本数据类型时,用于判别是否相等当用于引用数据类型时,用来判别引用是否指向相同的对象Java虚拟机中含有字符串池(直接量在此池内),相同内容的字符串直接量相同的对象s1=“hello”;/字符串直接量s2=newString(hello);s1=hello;/trues2=hello;/false,字符串(String)比较方法,booleanequals(ObjectanObject)比较当前的字符串与指定的对象比较结果为真当且仅当给定的参数不为空,并且具有完全相同的字符序列例如:s1.equals(Hi);booleanequalsIgnoreCase(StringanotherString)判别相等,但不区分大小写例如:在不区分大小写情况下,“hello”与“HELLO”相等,字符串(String)比较方法,intcompareTo(StringanotherString)比较两个字符串的内容返回:0:如果字符串内容完全相同小于0的值:如果在比较第一个不相同字符,当前字符串的字符的值小于anotherString对应的字符的值大于0的值:如果在比较第一个不相同字符,当前字符串的字符的值大于anotherString对应的字符的值intcompareToIgnoreCase(Stringstr)比较两个字符串的内容,但不区分大小写,查找字符串中的字符或子串,查找字符串(String)中的字符或子串方法indexOf四种重载方法indexOf返回第一次找到的时下标如果没有找到,则返回-1示例:Stringname=CoolTools;System.out.println(name.indexOf(oo);,查找字符串中的字符或子串,方法lastIndexOfpublicintlastIndexOf(intch,intfromIndex)从指定位置往回查找,返回找到的最大的字符下标位置即返回满足下面条件的最大值:(this.charAt(k)=ch)c-)dest.append(source.charAt(c);returndest.toString();,insert和delete方法,方法insert允许将各种数据插到StringBuffer对象的指定位置方法delete(intstart,intend)和deleteCharAt(intindex)允许删除StringBuffer对象中的指定字符,本章总体纲要,数组字符串字符串缓冲区向量哈希表,向量,向量所对应的类是类java.util.Vector向量变量的声明格式Vector变量名;示例Vectorvs;,创建向量实例对象,Vectorvs=newVector();Vectorvo=newVector();,增加元素,publicbooleanadd(Eo)publicvoidaddElement(Eobj)示例vs.add(Tom);,修改元素,publicEset(intindex,Eelement)publicvoidsetElementAt(Eobj,intindex),删除元素,publicvoidclear()publicvoidremoveAllElements()publicEremove(intindex)publicvoidremoveElementAt(intindex),通过迭代器(iterator)获取向量对象的各个元素,类java.util.Vector的成员方法publicIteratoriterator()接口java.util.Iterator的成员方法booleanhasNext()接口java.util.Iterator的成员方法Enext(),本章总体纲要,数组字符串字符串缓冲区向量哈希表,哈希函数或散列函数,示例h1(s)=s0*31(n-1)+s1*31(n-2)+.+sn-1哈希码(hashcode)或散列索引由哈希函数计算出来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025《企业无息借款合同范本》
- 2025标准车辆买卖合同范文
- 2025农药购买合同版
- 红楼梦高中课件
- 党支部成立培训课件
- 农民参与技术推广服务合作协议
- 新能源行业2025年技术创新:研发投入与产出效益评估报告
- 网络文学IP全产业链布局与2025年价值实现路径研究报告
- 生态修复植被重建技术在2025年成果鉴定与生物防治技术研究报告
- 2025年其他有色金属压延加工行业研究报告及未来行业发展趋势预测
- GB/T 44335-2024精细陶瓷涂层试验方法基于Stoney公式的陶瓷涂层内应力测定
- 水电站进水口启闭机排架结构及配筋计算书
- DZ∕T 0097-2021 工程地质调查规范(1:50 000)(正式版)
- 2022-2023学年河南省郑州市高一下学期期末考试数学试题(解析版)
- 小型化便携式医用雾化器设计研究
- 人力资源管理(初级)(自考) 课件 赵凤敏 第6-10章 人员素质测评-职业生涯管理
- 贵州水库工程施工现场临时用电施工方案(用电量计算)
- translated-2023+BTS临床声明:成人慢性咳嗽
- 寻访红色足迹课件
- 工伤私了协议书:免修版模板范本
- (完整word版)HND商务文化与策略
评论
0/150
提交评论