JAVA语言程序设计数组ppt课件

上传人:29 文档编号:240774107 上传时间:2024-05-07 格式:PPT 页数:49 大小:291.67KB
返回 下载 相关 举报
JAVA语言程序设计数组ppt课件_第1页
第1页 / 共49页
JAVA语言程序设计数组ppt课件_第2页
第2页 / 共49页
JAVA语言程序设计数组ppt课件_第3页
第3页 / 共49页
点击查看更多>>
资源描述
第五章 数组v5.1 5.1 一维数组一维数组v5.2 5.2 多维数组多维数组v5.3 5.3 数组的基本操作数组的基本操作v5.4 5.4 数组应用举例数组应用举例v5.5 5.5 数组参数数组参数v5.6 5.6 字符串字符串第五章 数组5.1 一维数组1Introductionv 数组,数组,Array(Array(阵列阵列)v 变量:存储单个数据变量:存储单个数据v 数组:存储多个数据数组:存储多个数据具有相同性质的一批数据具有相同性质的一批数据Java Java 数组:用一个变量表示一组相同类型的数据数组:用一个变量表示一组相同类型的数据Introduction 数组,Array(阵列)2For Examplev一组一组n个学生的成绩数据处理个学生的成绩数据处理输入输入输出输出排序排序求最大求最大求平均值求平均值判断不及格判断不及格统计分数段统计分数段v给每一个学生的成绩数据设定一个变量?给每一个学生的成绩数据设定一个变量?NO!For Example一组n个学生的成绩数据处理35.1 一维数组v数组数组一个变量名表示一组数据,每个数据称为数组元素一个变量名表示一组数据,每个数据称为数组元素每个元素通过下标来区分每个元素通过下标来区分v一维数组一维数组以一个下标确定数组中的不同元素以一个下标确定数组中的不同元素v多维数组多维数组多个下标表示一个数组元素多个下标表示一个数组元素v数组必须先经过申明和初始化后才能使用数组必须先经过申明和初始化后才能使用数组申明:确定数组名、数组的维数和数组元素的数据类型数组申明:确定数组名、数组的维数和数组元素的数据类型5.1 一维数组数组4一维数组的声明v 一维数组声明的格式一维数组声明的格式类型标识符类型标识符 数组名数组名 或或类型标识符类型标识符 数组名数组名 例:表示学生的成绩例:表示学生的成绩(整数整数),可以声明数组,可以声明数组score:int score;表示体重的数组类型为表示体重的数组类型为float的的weight,声明:,声明:float weight;Note:方方括括号号可可以以在在变变量量名名的的后后面面,也也可可以以在在类类型型名名后面后面一维数组的声明 一维数组声明的格式5一维数组的初始化v数组初始化数组初始化系统为数组分配存储空间,确定数组元素的个数系统为数组分配存储空间,确定数组元素的个数用用 new new 初始化数组初始化数组 数组名数组名=new=new 类型标识符类型标识符 元素个数元素个数 v先声明数组再初始化先声明数组再初始化 int sc ;sc=new int10;float weight;weight=new float50l 数组元素通过下标来区分数组元素通过下标来区分l 下标最小值为下标最小值为0 0l 下标最大值为下标最大值为元素个数减元素个数减1 1l 各元素的存储空间是连续的各元素的存储空间是连续的sc0sc1sc2sc3sc4sc5sc6sc7sc8sc9一维数组的初始化数组初始化 数组元素通过下标来区分sc06一维数组初始化v在声明的同时进行初始化在声明的同时进行初始化即将前述的声明语句、即将前述的声明语句、newnew语句合并为一条语句:语句合并为一条语句:类型标识符类型标识符 数组名数组名=new 类型标识符类型标识符元素个数元素个数 或或类型标识符类型标识符 数组名数组名=new 类型标识符类型标识符元素个数元素个数例如:例如:int sc=new int10;float weight=new float50v初始化数组后,通过数组的初始化数组后,通过数组的lengthlength获取元素个数获取元素个数 数组数组.length.length例如:例如:n=sc.length;/n=10 m=weight.length;/m=50一维数组初始化在声明的同时进行初始化7赋初值初始化数组v可以在声明数组的同时,给数组元素赋初值可以在声明数组的同时,给数组元素赋初值v所赋初值的个数决定数组元素的数目所赋初值的个数决定数组元素的数目v其格式如下其格式如下:类型标识符类型标识符 数组名数组名=初值表初值表 v初值表是用逗号隔开的初始值,例如:初值表是用逗号隔开的初始值,例如:int score=65,34,78,81,56,92,56,87,90,77;65 34 78 81 56 92 56 87 90 77score0score9赋初值初始化数组可以在声明数组的同时,给数组元素赋初值6538使用数组的好处v减少程序中的变量数量减少程序中的变量数量v统一的数组名,易于理解统一的数组名,易于理解v对数据元素的操作可以使用循环语句对数据元素的操作可以使用循环语句一维数组元素的赋值和输出都可以通过一维数组元素的赋值和输出都可以通过单重循环语句单重循环语句完成完成【例补【例补5-105-10】输入输入10个学生的成绩,统计最高分,平均分、不个学生的成绩,统计最高分,平均分、不及格人数及高于平均分的人数及格人数及高于平均分的人数1.1.定义数组定义数组sc10sc10用于存放用于存放1010个学生成绩个学生成绩2.2.利用循环语句输入成绩并统计利用循环语句输入成绩并统计使用数组的好处减少程序中的变量数量定义数组sc10用于存95.2 多维数组v二维数组的声明二维数组的声明二维数组经常表示一个矩阵二维数组经常表示一个矩阵二维数组的声明方式与一维数组类似,只是要给出两对二维数组的声明方式与一维数组类似,只是要给出两对方括号。二维数组声明形式如下:方括号。二维数组声明形式如下:类型标识符类型标识符 数组名数组名或或 类型标识符类型标识符 数组名数组名例如:例如:int a;int a;/第一个第一个叫做行,第二个叫做行,第二个叫做列叫做列5.2 多维数组二维数组的声明10二维数组的初始化v先声明数组再初始化先声明数组再初始化用用newnew初始化二维数组初始化二维数组 数组名数组名=new=new 类型标识符类型标识符 行数行数列数列数 例如:例如:int a;int a;a=new int34;a=new int34;v声明同时初始化声明同时初始化 类型标识符类型标识符 数组名数组名=new=new 类型标识符类型标识符 行数行数列数列数 或或 类型标识符类型标识符 数组名数组名=new=new 类型标识符类型标识符 行数行数列数列数 例如:例如:int a=new int34;int a=new int34;二维数组的初始化先声明数组再初始化11int a=new int34;v数组中各元素通过两个下标来区分数组中各元素通过两个下标来区分v每个下标的最小值为每个下标的最小值为0 0,最大值分别比行数或列数少,最大值分别比行数或列数少1 1。v系统为该数组系统为该数组a a的的1212个元素分配存储空间,形式如表所示:个元素分配存储空间,形式如表所示:a0 0a0 1a0 2a03a1 0a1 1a1 2a1 3a2 0a2 1a2 2a2 3行行列列二维数组的初始化v初始化后,通过属性初始化后,通过属性lengthlength获取行数和列数获取行数和列数获取数组行数:获取数组行数:数组名数组名.length.length 例:例:a.lengtha.length /值为值为3 3获取数组列数:获取数组列数:数组名数组名 行标行标.length.length 例例:a0.lengtha0.length /值为值为3 3int a=new int34;a0 12int a=new int34;vJavaJava中,二维数组作为一维数组来处理中,二维数组作为一维数组来处理A A可看作一维数组,有可看作一维数组,有3 3个元素个元素a0a0、a1a1、a2a2每个元素本身是一维数组,例:每个元素本身是一维数组,例:二维数组的初始化v在初始化时,可以各行单独进行,允许各行元素不同、在初始化时,可以各行单独进行,允许各行元素不同、int c=new int3;int c=new int3;/c/c为为3 3行二维数组行二维数组 c0=new int1;c0=new int1;/c0/c0具有具有1 1个元素个元素 c1=new int3;c1=new int3;/c1/c1具有具有3 3个元素个元素 c2=new int5;c2=new int5;/c2/c2具有具有5 5个元素个元素a00、a01、a02、a03int a=new int34;二维数组的初13赋初值初始化二维数组类型标识符类型标识符 数组名数组名=初值表初值表0,0,初值表初值表1,1,初值表初值表n;n;例:例:int gd=65,34,78,81,56,92,56,87,90,92,69,75;/gd共有共有12个元素,元素个元素,元素gd00,gd01,gd02,gd10,gd32的初始值分别为的初始值分别为65,34,78,75,如表所示,如表所示gd 00 65gd 01 34gd 02 78gd 10 81gd 11 56gd 12 92gd 20 56gd 21 87gd 22 90gd 30 92gd 31 69gd 32 75注意注意:二维数组元素的赋值和输出可以通过二维数组元素的赋值和输出可以通过双重循环语句双重循环语句完完成成赋初值初始化二维数组类型标识符 数组名=初值表0145.3 数组的基本操作 v数组的引用数组的引用 对数组的应用通常是对其元素的引用对数组的应用通常是对其元素的引用数组元素可以被赋值、被输出或参加表达式运算数组元素可以被赋值、被输出或参加表达式运算 int age=new int3;age0=25;age2=2+age0;v数组的复制数组的复制可以通过循环语句可以通过循环语句也可以直接将一个数组赋值给另一数组也可以直接将一个数组赋值给另一数组 int a=new int6;/将将b数组的各元素值赋值数组的各元素值赋值a数组的相应元素数组的相应元素 int b=1,2,3,4,5,6;for(int i=0;i6;i+)ai=bi;或或 a=b;5.3 数组的基本操作 数组的引用 15Demo1int c,d,e,i,j;c=new int33;d=new int33;e=new int33;for(i=0;i3;i+)for(j=0;j3;j+)dij=i+j;cij=dij;e=d;c c、d d、e e数组各元素数组各元素0 1 2 1 2 3 2 3 4 Demo1int c,d,e,i,16数组的基本操作v数组的输出数组的输出数组输出通常是逐个元素结合循环语句实现数组输出通常是逐个元素结合循环语句实现 int a=new int6;for(int i=0;i6;i+)ai=i;System.out.print(ai+”);输出输出:0 1 2 3 4 50 1 2 3 4 5数组的基本操作数组的输出输出:17例【5-2】一维数组的复制class ArrayC class ArrayC public static void main(String args)public static void main(String args)int a,b,i,j;int a,b,i,j;a=new int3;a=new int3;b=new int5;b=new int5;System.out.println(a.length=+a.length);System.out.println(a.length=+a.length);for(i=0;ia.length;i+)for(i=0;ia.length;i+)ai=i;ai=i;System.out.print(ai+);System.out.print(ai+);System.out.println();System.out.println();/作用?作用?(接下(接下页)例【5-2】一维数组的复制class ArrayC 18 System.out.println(Before array assignment);System.out.println(Before array assignment);System.out.println(b.length=+b.length);System.out.println(b.length=+b.length);for(j=0;jb.length;j+)for(j=0;jb.length;j+)bj=j*10;bj=j*10;System.out.print(bj+System.out.print(bj+););System.out.println();System.out.println();b=a;b=a;/注意,数组注意,数组a a、b b长度不一样长度不一样 System.out.println(After array assignment);System.out.println(After array assignment);System.out.println(b.length=+b.length);System.out.println(b.length=+b.length);for(j=0;jb.length;j+)for(j=0;jb.length;j+)System.out.print(bj System.out.print(bj+);System.out.println();System.out.println();a.length=30 1 2 Before array assignmentb.length=50 10 20 30 40 After array assignmentb.length=30 1 2 System.out.println(Before a19int c,d,i,j;int c,d,i,j;c=new int22;c=new int22;d=new int33;d=new int33;System.System.outout.println(Array d:);.println(Array d:);for(i=0;id.length;i+)for(i=0;id.length;i+)for(j=0;jdi.length;j+)for(j=0;jdi.length;j+)dij=i+j;dij=i+j;System.System.outout.print(dij+“);.print(dij+“);System.System.outout.println();.println();c=d;c=d;System.System.outout.println(Array c:);.println(Array c:);for(i=0;ic.length;i+)for(i=0;ic.length;i+)for(j=0;jci.length;j+)for(j=0;jaj,position=japositionaj,position=jv故第故第i i轮的选择和交换过程中,要进行轮的选择和交换过程中,要进行n-in-i次的比较次的比较 for(i=1;in;i+)for(i=1;in;i+)p=i;p=i;for(j=i+1;j=n;j+)for(j=i+1;jaj)p=j;if(apaj)p=j;temp=ai;ai=ap;ap=temp;temp=ai;ai=ap;ap=temp;数组应用举例-排序对n个待排序的数,要进行n-1轮的选择和交245.4 数组应用举例-排序v另一种排序法另一种排序法-冒泡法冒泡法,基本思想基本思想:从数组元素从数组元素a(0)a(0)到到a(n-1)a(n-1),将相邻的两个数两两进行比,将相邻的两个数两两进行比较(共比较较(共比较n-1n-1次),若前一个数大于后一个数,则进次),若前一个数大于后一个数,则进行对调。一趟操作后,行对调。一趟操作后,a(n-1)a(n-1)已为最大数。已为最大数。再从数组元素再从数组元素a(0)a(0)到到a(n-2)a(n-2)作同样操作后,结果是作同样操作后,结果是a(n-a(n-2)2)成为次大数。成为次大数。重复以上步骤,直至只剩重复以上步骤,直至只剩a(0)a(0)和和a(1)a(1)作比较作比较,大的数放大的数放在在a(1),a(1),剩下的剩下的a(0)a(0)自然是最小数了自然是最小数了.。5.4 数组应用举例-排序另一种排序法-冒泡法,基本思想:25数组应用举例-一维数组【例补【例补5-15-1】产生产生1010个个2 2位正整数,按从小到大排序,输入任位正整数,按从小到大排序,输入任一正整数,插入到原有数据序列中,保持从小到大次序不变一正整数,插入到原有数据序列中,保持从小到大次序不变【例补【例补5-25-2】任意输入任意输入n n个整数,再输入一个整数,查找该数个整数,再输入一个整数,查找该数在在n n个数中出现的位置和次数。个数中出现的位置和次数。数组应用举例-一维数组【例补5-1】产生10个2位正整数,按26数组应用举例二维数组【例补【例补5-35-3】输出杨辉三角型输出杨辉三角型(输出输出1010行行)1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1【例补【例补5-45-4】求一个个位整数构成的求一个个位整数构成的5 5行行5 5列方阵对角线上元素列方阵对角线上元素之积之积解题解题:定义一个定义一个1010行行1010列的二维数组列的二维数组a1010ai0=1;aii=1ai0=1;aii=1aij=ai-1j-1+ai-1jaij=ai-1j-1+ai-1j主对角线元素下标主对角线元素下标:行号和列号相等行号和列号相等,即即i=ji=j副对角线元素下标副对角线元素下标:行号、列号之和等于行号、列号之和等于4 4,即,即j=4-ij=4-i数组应用举例二维数组【例补5-3】输出杨辉三角型(输出1027数组应用举例-矩阵运算【例【例5-55-5】数学中的矩阵在数学中的矩阵在JavaJava中用二维数组实现,本例中中用二维数组实现,本例中要进行矩阵的加、乘运算。要进行矩阵的加、乘运算。int c=1,2,3,4,5,6,7,8,9;int c=1,2,3,4,5,6,7,8,9;int d=2,2,2,1,1,1,3,3,3;int d=2,2,2,1,1,1,3,3,3;求求c+dc+d,c*dc*d?矩阵乘法运算矩阵乘法运算用数组用数组c c的第的第1 1行各个数与数组行各个数与数组d d的第的第1 1列各个数对应相乘后加起来,列各个数对应相乘后加起来,就是乘法结果中第就是乘法结果中第1 1行第行第1 1列的数列的数;用数组用数组c c的第的第1 1行各个数与数组行各个数与数组d d的第的第2 2列各个数对应相乘后加起来,列各个数对应相乘后加起来,就是乘法结果中第就是乘法结果中第1 1行第行第2 2列的数;列的数;用数组用数组c c的第的第2 2行各个数与数组行各个数与数组d d的第的第1 1列各个数对应相乘后加起来,列各个数对应相乘后加起来,就是乘法结果中第就是乘法结果中第2 2行第行第1 1列的数;列的数;数组应用举例-矩阵运算【例5-5】数学中的矩阵在Java中285.5 数组参数v在在javajava的过程中,允许参数是数组。在使用数组参数时的过程中,允许参数是数组。在使用数组参数时:在形式参数表中,数组名后的括号不能省略,括号个数和数在形式参数表中,数组名后的括号不能省略,括号个数和数组的维数相等。不需给出数组元素的个数组的维数相等。不需给出数组元素的个数在实际参数表中,数组名后不需括号在实际参数表中,数组名后不需括号class ArrayC4 class ArrayC4 /例【例【5-65-6】计算数组元素平均值】计算数组元素平均值 public static void main(String args)public static void main(String args)int c=1,2,3,4,5,6,7,8,9;int c=1,2,3,4,5,6,7,8,9;int j;int j;System.out.println(Array c);System.out.println(Array c);for(j=0;jc.length;j+)for(j=0;jc.length;j+)System.out.print(cj+);System.out.print(cj+);System.out.println();System.out.println();System.out.println(Array average);System.out.println(Array average);System.out.println(arrayAverage(c);System.out.println(arrayAverage(c);/调用数组调用数组 5.5 数组参数在java的过程中,允许参数是数组。在使用数295.5 数组参数-DEMO/通通过过“方法方法”计计算数算数组组元素的平均元素的平均值值,数,数组组名作名作为为形式参数形式参数static float arrayAverage(int d)static float arrayAverage(int d)float average=0;float average=0;for(int i=0;id.length;i+)for(int i=0;id.length;i+)average=average+di;average=average+di;average=average/d.length;average=average/d.length;return average;return average;程序运行结果如下:程序运行结果如下:Array cArray c1 2 3 4 5 6 7 8 91 2 3 4 5 6 7 8 9Array averageArray average5.05.0数组名做实际参数时,传递的是地址,而不是值数组名做实际参数时,传递的是地址,而不是值 即形式参即形式参数和实际参数具有相同的存储单元。数和实际参数具有相同的存储单元。形式参数值的改变将导致实际参数的值随之改变形式参数值的改变将导致实际参数的值随之改变5.5 数组参数-DEMO/通过“方法”计算数组元素的平305.5 数组参数-DEMO例例【5-75-7】展示数组参数传递地址的特性展示数组参数传递地址的特性class ArrayC6 class ArrayC6 public static void main(String args)public static void main(String args)int c=1,2,3,4,5,6,7,8,9,10;int c=1,2,3,4,5,6,7,8,9,10;int i,j;int i,j;System.out.println(“System.out.println(“调用调用arrayMultiplyarrayMultiply之前的数组之前的数组););for(i=0;ic.length;i+)for(i=0;ic.length;i+)for(j=0;jci.length;j+)for(j=0;jci.length;j+)System.out.print(cij+);System.out.print(cij+);System.out.println();System.out.println();arrayMultiply(c);arrayMultiply(c);/调用数组调用数组 5.5 数组参数-DEMO例【5-7】展示数组参数传递地址的31 System.out.println(“System.out.println(“调用用arrayMultiplyarrayMultiply之后的之后的数数组););for(i=0;ic.length;i+)for(i=0;ic.length;i+)/What Do?/What Do?for(j=0;jci.length;j+)for(j=0;jci.length;j+)System.out.print(cij+);System.out.print(cij+);System.out.println();System.out.println();static void arrayMultiply(int d)static void arrayMultiply(int d)int k,l;int k,l;for(k=0;kd.length;k+)for(k=0;kd.length;k+)for(l=0;ldk.length;l+)for(l=0;ldk.length;l+)dkl=2*dkl;dkl=2*dkl;System.out.println(In arrayMultiply);System.out.println(In arrayMultiply);for(k=0;kd.length;k+)for(k=0;kd.length;k+)for(l=0;ldk.length;l+)for(l=0;ldk.length;l+)System.out.print(dkl+);System.out.print(dkl+);System.out.println();System.out.println();/方法方法arrayMultiplyarrayMultiply结束结束 /程序结束程序结束调调用用arrayMultiply前的数前的数组组1 2 3 4 56 7 8 9 10In arrayMultiply2 4 6 8 1012 14 16 18 20调调用用arrayMultiply后的数后的数组组2 4 6 8 1012 14 16 18 20 调用arrayMultiply前的数组32【例例5-85-8】展示数组元素参数传递值的特性展示数组元素参数传递值的特性class ArrayC7 class ArrayC7 public static void main(String args)public static void main(String args)int c=1,10,100,1000;int c=1,10,100,1000;int j;int j;System.out.println(“System.out.println(“数组在调用数组在调用elementMultiplyelementMultiply前前););for(j=0;jc.length;j+)for(j=0;jc.length;j+)System.out.print(cj+);System.out.print(cj+);System.out.println();System.out.println();elementMultiply(c2);elementMultiply(c2);System.out.println(“System.out.println(“数组在调用数组在调用elementMultiplyelementMultiply后后););5.5 数组参数-DEMO【例5-8】展示数组元素参数传递值的特性5.5 数组参数-D33 for(j=0;jc.length;j+)for(j=0;jc.length;j+)System.out.print(cj+);System.out.print(cj+);System.out.println();System.out.println();/main/main 方法结束方法结束static void elementMultiply(int d)static void elementMultiply(int d)d=2*d;d=2*d;System.out.println(d=+d);System.out.println(d=+d);/elementMultiply/elementMultiply 方法结束方法结束 /程序结束程序结束 for(j=0;jc.length;j+)34该程序的运行结果如下:该程序的运行结果如下:数组在调用数组在调用elementMultiply前前1 10 100 1000d=200 /在在elementMultiply中的输出中的输出数组在调用数组在调用elementMultiply后后1 10 100 1000数组做方法的参数时传递的是地址数组做方法的参数时传递的是地址,但数组元素做但数组元素做参数时传递的是值。参数时传递的是值。该程序的运行结果如下:数组做方法的参数时传递的是地址,但数组35字符数组与字符串字符数组与字符串v字符数组指数组的元素是字符类型的数据。字符数组指数组的元素是字符类型的数据。要表要表“China”“China”,可以使用如下的字符数组:,可以使用如下的字符数组:char country=C,h,i,n,a;System.out.println(country);/输输出出”Chian”Chian”要表示长度为要表示长度为5050的字符串,可以使用如下的字符数组:的字符串,可以使用如下的字符数组:char title=new char50;用字符数用字符数组组表示表示字符串字符串,使用不方便使用不方便,Java,Java提供提供StringString类类5.6 字符串 字符数组与字符串5.6 字符串 36v字符串变量的声明和初始化:字符串变量的声明和初始化:String String 变量名;变量名;/先申明再初始化先申明再初始化 变量名变量名=new String();=new String();或或 /申明的同时初始化申明的同时初始化 String String 字符串变量字符串变量=new String();=new String();例如:例如:String s=new String();String s=new String();v字符串赋值字符串赋值可以为字符串变量赋一个字符串常量,可以为字符串变量赋一个字符串常量,也可以将一个字符串变量或表达式的值赋给字符串变量。也可以将一个字符串变量或表达式的值赋给字符串变量。s1=Chinese people;s1=Chinese people;s2=s1;s2=s1;/s2/s2的值为的值为“Chinese people”“Chinese people”s3=a lot of+s2;s3=a lot of+s2;/s3/s3的值为的值为“a lot of Chinese“a lot of Chinese people”people”运算符运算符“+”“+”的作用的作用是将前后的两个字符串连接起来是将前后的两个字符串连接起来字符串 字符串变量的声明和初始化:字符串 37v最简单的创建字符串变量的方法最简单的创建字符串变量的方法 String s1=Chinese people;或或:String s1;s1=Chinese people;v字符串的输出字符串的输出字符串可以通过字符串可以通过println()println()或或print()print()语句输出语句输出 例如,以下语句序列为字符串变量例如,以下语句序列为字符串变量s s赋值并输出其值:赋值并输出其值:String s=All the world;System.out.println(s);字符串 最简单的创建字符串变量的方法字符串 38public class StringUsepublic class StringUse public static void main(String args)public static void main(String args)String s1,s2;String s1,s2;s1=new String(Students should);s1=new String(Students should);s2=new String();s2=new String();s2=study hard.;s2=study hard.;System.out.print(s1);System.out.print(s1);System.out.println(s2);System.out.println(s2);s2=learn english,too;s2=learn english,too;System.out.print(s1);System.out.print(s1);System.out.println(s2);System.out.println(s2);s2=s1+s2;s2=s1+s2;System.out.println(s2);System.out.println(s2);【例例5-95-9】字符串应用字符串应用该程序的运行结果如下:该程序的运行结果如下:Students should study hard.Students should learn english,tooStudents should learn english,toopublic class StringUse【例5-9】字39v字符串操作字符串操作 String String类用很多成员方法来对字符串进行操作。类用很多成员方法来对字符串进行操作。例:例:s=“I am a student.”Int length():返回字符串的长度。:返回字符串的长度。s.length()/返回值返回值1515 char charAt(int index):返回字符串中第:返回字符串中第index个字符个字符 s.charAt(7)/返回值返回值s s,注意第,注意第1 1个字符序号个字符序号0 0 int indexOf(int ch):返回字符串中字符:返回字符串中字符ch第第1次出现的次出现的位置。位置。s.indexOf(a)或或 s.indexOf(97)/返回值返回值2 2 s.indexOf(A)/返回值返回值-1,-1,没有指定的字符没有指定的字符chch返回值为返回值为-1-1字符串操作 字符串操作 字符串操作 40 例:例:s=“I am a student.”indexOf(String str,int index):返回在该字符中,从返回在该字符中,从第第indexindex个位置开始,子字符串个位置开始,子字符串strstr第第1 1次出现的位置。次出现的位置。s.indexOf(“stu”,0)s.indexOf(“stu”,0)/返回值是返回值是7 7 s.indexOf(“stu”,9)s.indexOf(“stu”,9)/没有找到,返回值是没有找到,返回值是-1-1 substring(int index1,int index2):返回值是在该字返回值是在该字符串中,从第符串中,从第index1index1个位置开始,到第个位置开始,到第index2-1index2-1个位置个位置结束的子字符串。结束的子字符串。s.substring(7,13)s.substring(7,13)/返回值是返回值是studenstuden s.substring(7)s.substring(7)/返回值是返回值是student.student.l若省略若省略index2,index2,从第从第index1index1个位置开始,到结束的子字符个位置开始,到结束的子字符串串 字符串操作 例:s=“I am a student.”字符串操作 41例:例:s=student;vboolean equals(Object obj):将字符串与将字符串与objobj所表示的字所表示的字符串进行比较,如果两者相等,返回值符串进行比较,如果两者相等,返回值truetrue,否则,否则falsefalse s.equals(“Student”)/返回值返回值falsefalsevboolean equalsIgnoreCase(String str):将字符串与将字符串与strstr所表示的字符串进行比较,但忽略大小写,如果两者相等,所表示的字符串进行比较,但忽略大小写,如果两者相等,返回值返回值truetrue,否则,否则falsefalse s.equalsIgnoreCase(“Student”)/返回值返回值truetrue字符串操作 例:s=student;字符串操作 42字符串操作 注意:注意:=也能进行字符串是否相等的比较也能进行字符串是否相等的比较,但但=比较的是比较的是地址指针地址指针,而而equalsequals比较的是实际内容比较的是实际内容.String s1=new String(Hello);String s2=new String(Hello);System.out.println(s1=s2);/输出输出falseSystem.out.println(s1.equals(s2);/输出输出true当要比较当要比较2 2个字符串是否相等时,应用个字符串是否相等时,应用equalsequals方法方法。字符串操作 注意:=也能进行字符串是否相等的比较,但=43例:例:s=student;vint compareTo(String str):int compareTo(String str):将字符串与将字符串与strstr所表示的字符所表示的字符串进行比较串进行比较,如果该字符串比如果该字符串比strstr表示的字符串大,返回正值表示的字符串大,返回正值若比若比strstr表示的字符串小,返回负值表示的字符串小,返回负值如果两者相等,返回如果两者相等,返回0 0返回值等于两个字符串中第一对不相等字符的返回值等于两个字符串中第一对不相等字符的ASCIIASCII码的差值码的差值 pareTo(“stuate”)/返回值返回值3 pareTo(swap)/返回值返回值-3 pareTo(student)/返回值返回值0字符串操作 例:s=student;字符串操作 44v 将将int,long,float,double,booleanint,long,float,double,boolean等基本类型数据等基本类型数据 转换为转换为StringString类型的方法:类型的方法:String.valueOf(String.valueOf(基本类型数据基本类型数据)v 将字符串型数据转换为其它基本类型的方法及实例将字符串型数据转换为其它基本类型的方法及实例 方法方法返回值类型返回值类型返回值返回值Boolean.getBoolean(false)booleanfalseInteger.parseInt(123)int123Long.parseLong(375)long375Float.parseFloat(345.23)float345.23Double.parseDouble(6782.34)double67892.34字符串与其它类型数据转换 将int,long,float,double,b45字符串操作举例【例补【例补5-55-5】输入一字符串,判断是否回文输入一字符串,判断是否回文1.若一个字符串的逆序字符串和原字符串相等,则该字若一个字符串的逆序字符串和原字符串相等,则该字符串是回文符串是回文2.将字符串中的字符逐个取出将字符串中的字符逐个取出3.反向连接成一个新的字符串反向连接成一个新的字符串4.判断新、旧字符串是否相等判断新、旧字符串是否相等【例补【例补5-65-6】输入一字符串,将字符串中的字符从小到大排输入一字符串,将字符串中的字符从小到大排序后输出新的字符串。如输入序后输出新的字符串。如输入”student”student”,输出,输出”densttu”densttu”字符串操作举例【例补5-5】输入一字符串,判断是否回文若一个46字符串操作举例【例补【例补5-85-8】将十六进制数转换成十进制数将十六进制数转换成十进制数【例补【例补5-75-7】先输入一个字符先输入一个字符chch,再输入一个字符串,在字,再输入一个字符串,在字符串中查找该字符符串中查找该字符(ch)(ch),如果找到,则输出,如果找到,则输出 该字符在字符该字符在字符串中最后出现的位置,否则输出串中最后出现的位置,否则输出“Not Found”“Not Found”。1.输入一个十六进制数字符串输入一个十六进制数字符串2.逐个字符逐个字符(存放变量存放变量 char ch)取出转换成取出转换成int类型数据类型数据a)如如9 9 Integer.parseInt(+ch)b)如如d 13 10+(ch-a)3.乘以相应的位权再累加起来乘以相应的位权再累加起来1.1.输入字符输入字符ch:ch:ch=(in.nextLine().charAt(0);2.2.利用利用StringString类的类的charAt()charAt()方法将字符串中的字符逐个方法将字符串中的字符逐个取出与字符取出与字符chch比较,进行查找。比较,进行查找。字符串操作举例【例补5-8】将十六进制数转换成十进制数【例补47字符串数组v要表示一组字符串可以用字符串数组来实现。要表示一组字符串可以用字符串数组来实现。String str=new String4;String str=new String4;str0=“Chinese”;str0=“Chinese”;str1=“English”;str1=“English”;str2=Tianjin;str2=Tianjin;str3=Chongqing;str3=Chongqing;v MainMain方法有一个形式参数方法有一个形式参数argsargs,其,其类型就是型就是字符串数组字符串数组该参数的功能是接收程序运行时通过命令行输入的数据该参数的功能是接收程序运行时通过命令行输入的数据public class StringArraypublic class StringArray public static void main(String args)public static void main(String args)int i;int i;for(i=0;iargs.length;i+)for(i=0;iargs.length;i+)System.out.println(argsi);System.out.println(argsi);字符串数组要表示一组字符串可以用字符串数组来实现。48字符串数组运行时,在运行时,在EclipseEclipse菜单的菜单的“运行运行”“”“运行配置运行配置”“(x)=“(x)=自变量自变量”中输入中输入”one two three”one two three”运行结果运行结果one arg0two arg1three arg2【例补【例补5-95-9】将输入的将输入的n个英文单词(每个单词间空格间隔)个英文单词(每个单词间空格间隔),按字典顺序重新排序输出,按字典顺序重新排序输出字符串数组运行时,在Eclipse菜单的“运行”“运行配49
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!