JAVA第7章数组与字符串.ppt_第1页
JAVA第7章数组与字符串.ppt_第2页
JAVA第7章数组与字符串.ppt_第3页
JAVA第7章数组与字符串.ppt_第4页
JAVA第7章数组与字符串.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第7章数组与字符串,7.1数组7.2字符串,7.1.1一维数组的定义,声明一维数组的语法:数据类型数组名;或数据类型数组名;,7.1数组,数组名就是数组的引用变量名,在使用数组时,要先指定数组的元素个数,再为各数组元素分配内存空间并进行赋值,然后通过数组的下标来使用数组中的每一个元素。,指定一维数组元素个数,7.1数组,为数组分配空间(指定数组元素个数):数组名=new数据类型元素个数;例定义一个保存全班5个同学成绩的数组:intscore;/声明数组scorescore=newint5;/指定数组score的例定义一个保存全班26个字母的数组:charch;ch=newint26;,上面的数组定义和指定数组元素的两个语句可以合并为一条:数据类型数组名=new数据类型元素个数;或者数据类型数组名=new数据类型元素个数;intscore=newint5;或者charch=newchar26;,7.1数组,一旦声明了数组的元素个数,数组的大小就不能再改变了,此时java将数组的引用变量名作为一个对象处理,并提供了属性length,可以直接获取数组元素的个数。例如:获取数组的元素个数System.out.println(score.length);,7.1数组,一维数组的长度,数组中每个元素都有一个唯一的下标与之对应,下标编号总是从0开始。可以利用数组名和下标来对该元素进行访问。访问数组元素的格式:数组名下标,7.1数组,一维数组元素的访问,7.1数组,例:数组定义为intscore=newint5;为数组的元素赋值:score0=98;score1=86;score2=75;score3=55;score4=65;,一维数组元素的赋值,Java中还提供了另外一种直接创建数组的方式,它将声明数组、分配空间和赋值合并完成。,7.1数组,数据类型数组名=值1,值2,值3,值n;或数据类型数组名=值1,值2,值3,值n;或数据类型数组名=new数据类型值1,值2,值3,值n,例:intscore=60,70,80,90,55;charscore=newcharA,B,C;,一维数组元素的赋值,为数组中每个元素赋值可以使用循环结构。,7.1数组,例:使用循环依次录入5个学生的成绩System.out.println(依次录入5个同学的成绩:);Scannersc=newScanner(System.in);intscore=newint5;for(inti=0;i5;i+)scorei=sc.nextInt();,一维数组元素的赋值,数组元素可以是简单数据类型的数据,也可以是类对象,如果数组元素为类对象则该数组被称为对象数组。,7.1数组,例:定义包含10个同学的对象数组Studentstu=newStudent10;for(inti=0;i10;i+)stui=newStudent();,【例】输入5个同学的Java考试成绩,并输出总成绩,最高分,并把5个同学的Java考试成绩按照升序排列,并输出排序后的结果。,7.1数组,importjava.util.Arrays;importjava.util.Scanner;publicclassScorepublicstaticvoidmain(Stringargs)intscore=newint5;intmax,sum=0;Scannerinput=newScanner(System.in);System.out.println(请输入5位学员的成绩:);for(inti=0;imax)max=scorej;System.out.println(最高分是:+max);,7.1数组,Arrays.sort(score);System.out.println(成绩按升序排序:);for(intindex=0;indexscore.length;index+)System.out.print(scoreindex+);,给定一个数组3,78,56,43,21,65,34,78,97,先输出排序前的数组,要求自己编写排序算法,按照升序排序输出;,7.1.2二维数组,7.1数组,二维数组的声明格式:数据类型二维数组名;或数据类型二维数组名;,二维数组在声明时进行初始化:数据类型二维数组名=序列0,序列1,序列n;或数据类型二维数组名=new数据类型行数;或数据类型二维数组名=new数据类型行数列数;,7.1数组,例:charstr;/声明一个字符型二维数组intintArray=1,2,2,3,3,4,5;/初始化doubledoubleArr=newdouble30;longlongArr=newlong1020;,7.1数组,二维数组在定义时若没有初始化,则必须在使用前对每一维进行初始化doubleArr0=newdouble3;doubleArr1=newdouble5;doubleArr29=newdouble4;,例:可以通过嵌套的for语句为列数相等的二维数组赋值:longlongArr=newlong1020;System.out.println(依次录入long1020的每个元素值:);Scannersc=newScanner(System.in);for(inti=0;i10;i+)for(intj=0;j20;j+)longArrij=sc.nextLong();例:可以通过嵌套的for语句为列数相等的二维数组输出元素之:intintArray=1,2,5,2,3,8,3,4,7;for(inti=0;i3;i+)for(intj=0;j3;j+)System.out.print(intArrayij+);System.out.println();,7.1数组,例:计算二维数组1,2,5,2,3,8,3,4,7所有元素之和:intintArray=1,2,5,2,3,8,3,4,7;intsum=0;for(inti=0;i3;i+)for(intj=0;j3;j+)sum=sum+intArrayij;System.out.println(sum);运行结果是:35,7.1数组,【例7-4】实现两个矩阵相乘。实现时使用三个二维数组存储参与运算的两个矩阵数据和一个结果矩阵数据。,7.1数组,publicclassMatricMultiplystaticvoidPrint(inta,introw,intcol)/输出矩阵a数据inti,j;System.out.println(矩阵:);for(i=0;irow;i+)for(j=0;jcol;j+)System.out.print(aij+);System.out.println();,publicstaticvoidmain(Stringargs)inti,j,k;inta=newint23;/定义并初始化一个二维数组aintb=1,5,2,8,5,9,10,-3,2,7,-5,-18;/定义并初始化/一个二维数组bintc=newint24;/定义并初始化一个二维数组cfor(i=0;i2;i+)/为矩阵a中各元素赋初值for(j=0;j3;j+)aij=(i+1)*(j+2);Print(a,2,3);/输出矩阵aSystem.out.println(乘以);,7.1数组,Print(b,3,4);/输出矩阵bfor(i=0;i2;i+)for(j=0;j4;j+)cij=0;for(k=0;k3;k+)cij+=aik*bkj;System.out.println(等于);Print(c,2,4);/输出结果矩阵c,7.1数组,回目录,7.2字符串,7.2.1字符串的表示,字符串直接使用双引号(“)将字符序列括在其中,例:“HelloWorld!”字符串常量都是String类的常量对象,因此可以用字符串常量直接初始化一个String对象。Strings=“hellojava;,String类的构造方法:String()创建空String对象String(Stringstr)用str创建一个新的String对象String(charchars)String(byteascii)String(StringBufferstrB),7.2字符串,例:Strings1;s1=newString(“abc”);Strings2=newString(“abc”);Strings3=newString();创建String对象后,字符串的长度和内容都是不可以改变的,7.2字符串,【例7-5】用String类的length()方法的获取字符串的长度,代码如下:importjava.util.Scanner;publicclassLenpublicstaticvoidmain(Stringargs)System.out.print(请随机输入你想到的名字:);Scannerinput=newScanner(System.in);Stringname=input.next();System.out.println(这个名字的长度是:+name.length()+);,7.2字符串,动态字符串StringBuffer可以动态的修改字符串变量构造方法:StringBuffer()StringBuffer(intlength)StringBuffer(Stringstr);,7.2字符串,例:StringBufferStrings2=newStringBuffer(“abc”);,7.2.2字符串的操作,7.2字符串,类String中常用的方法:length()/获取字符串的长度charAt(inti)/返回指定索引处的char值。indexOf(charc)/返回指定字符在此字符串中第一次出现处的索引。getBytes(StringcharsetName)/使用指定的字符集将此String编码为byte序列,并将结果存储到一个新的byte数组中。,类String和类StringBuffer提供的部分修改字符串方法:,1、String类提供的方法publicStringconcat(Stringstr);publicStringreplace(charoldChar,charnewChar);,7.2字符串,publicStringsubString(intbeginIndex);publicStringsubString(intbeginIndex,intndIndex);publicStringtoLowerCase();publicStringtoUpperCase();,2、StringBuffer类提供的方法publicsynchronizedStringBufferappend(Stringstr);publicsynchronizedStringBufferinsert(intoffset,Stringstr);publicsynchronizedvoidsetCharAt(intindex,charch);,7.2字符串,1、String中对字符串的操作不是对源操作串对象本身进行的,而是对新生成的一个源操作串对象的拷贝进行的,其操作的结果不影响源串2、StringBuffer中对字符串的修改操作是对源串本身直接进行的,操作之后源串的值发生了变化。StringBuffer维护一个大小固定的字符串缓冲区,当字符串长度超过StringBuffer大小时会自动增加,7.2字符串,注意:,【例7-6】用StringBuffer类调用append方法对字符串进行追加importjava.util.*;publicclassKechengpublicstaticvoidmain(Stringargs)StringBufferstr=newStringBuffer(“hello”);str.append(“student”);System.out.println(str);,7.2字符串,String中equals()和equalsIgnoreCase()方法与运算符“=”实现的比较:运算符“=”比较两个对象是否引用同一个实例equals()和equalsIgnoreCase()比较两个字符串中对应的每个字符值是否相同。,7.2字符串,例:Strings1=newString(“abc”);Strings2=newString(“abc”);booleaneq=(s1=s2);/eq值为falsebooleaneq1=s1.equals();/eq1值为true运算符“+”可用来实现字符串的连接,其他类型的数据与字符串进行“+”运算时,将自动转换成字符串。Strings=Heis+37+yearsold.;,7.2字符串,7.3综合应用实例,【实例7】,问题描

温馨提示

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

评论

0/150

提交评论