《数组和字符串》PPT课件.ppt





《《数组和字符串》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数组和字符串》PPT课件.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第10章 数组和字符串n n本章要点:数组的初始化数组的初始化数组的拷贝数组的拷贝命令行参数命令行参数StringString类类StringBufferStringBuffer类类使用使用StringTokenizerStringTokenizer类分析字符串类分析字符串CharacterCharacter类类字符串与字符、字节数组字符串与字符、字节数组10.1 数组数组n n10.1.1 数组的声明在在JavaJava中声明一个数组是很简单的。要想声明一个数组,中声明一个数组是很简单的。要想声明一个数组,要先声明数组的类型,再声明数组变量的名字。例如:下面的要先声明数组的类型,再声明数组变
2、量的名字。例如:下面的形式声明了一个整数数组形式声明了一个整数数组a a:int a;int a;或或int a;int a;这两种形式都是可以接受的,请读者根据个人的爱好选择,这两种形式都是可以接受的,请读者根据个人的爱好选择,但习惯上倾向于采用第一种形式。再如:根据我们设计的学生但习惯上倾向于采用第一种形式。再如:根据我们设计的学生类,想声明一个学生类的数组,则可以采用如下格式:类,想声明一个学生类的数组,则可以采用如下格式:Student aStudent;Student aStudent;或或Student aStudent;Student aStudent;在这里我们强调两件事情:在
3、这里我们强调两件事情:(1 1)我们声明整数数组)我们声明整数数组a a的类型是的类型是intint型,指的是整数数组型,指的是整数数组a a中的每中的每一个元素都是一个元素都是intint型的,不能再出现其他的类型。如果声明为型的,不能再出现其他的类型。如果声明为StringString类型的,则数组内的每一个元素都是类型的,则数组内的每一个元素都是StringString类型的。类型的。(2 2)声明一个数组如同声明其他任何类型的变量一样,也必须指)声明一个数组如同声明其他任何类型的变量一样,也必须指明数组的类型。数组的类型也就是数组内每一个元素的类型。明数组的类型。数组的类型也就是数组内
4、每一个元素的类型。n n10.1.2 数组的初始化要想初始化一个数组,有隐式和显式初始化两种要想初始化一个数组,有隐式和显式初始化两种方式。方式。1.1.隐式初始化隐式初始化用户可以像实例化一个对象一样采用关键字用户可以像实例化一个对象一样采用关键字newnew来实现。如初始化整数数组来实现。如初始化整数数组a a:int a=new int100;int a=new int100;或或int a=new int100;int a=new int100;再如初始化学生类数组再如初始化学生类数组Student aStudent=new Student50;Student aStudent=new
5、 Student50;或或Student aStudent=new Student50;Student aStudent=new Student50;这两种形式分别初始化整数数组这两种形式分别初始化整数数组a a的容量为的容量为100100,学生数组,学生数组aStudentaStudent的容量为的容量为5050,也就是说,在数,也就是说,在数组内最大的元素个数分别是组内最大的元素个数分别是100100和和5050,也只能容纳,也只能容纳100100和和5050个元素。个元素。2.2.显式初始化显式初始化所谓显式初始化,也就是在声明一个数组的时候,直接进所谓显式初始化,也就是在声明一个数组的
6、时候,直接进行数组的赋值。如声明一个具有行数组的赋值。如声明一个具有5 5个元素的整数数组个元素的整数数组b b:int b=1,2,3,4,5;int b=1,2,3,4,5;注意:在这种初始化方式中,我们没有使用关键字注意:在这种初始化方式中,我们没有使用关键字newnew,也没有指定数组元素的个数。但这样做是可行的,系统会也没有指定数组元素的个数。但这样做是可行的,系统会自动计算数组元素的个数,创建一个固定容量的数组。自动计算数组元素的个数,创建一个固定容量的数组。有时我们需要得到数组容量的大小,这时有一个特殊有时我们需要得到数组容量的大小,这时有一个特殊的方法,例如,我们要得到整数数组
7、的方法,例如,我们要得到整数数组b b的容量,可以采用的容量,可以采用如下的格式:如下的格式:b.length;/b.length;/注意这并不是方法的调用,注意这并不是方法的调用,lengthlength的后面没的后面没有括号。有括号。要知道学生类数组的大小,可以采用如下的格式:要知道学生类数组的大小,可以采用如下的格式:aStudent.length;aStudent.length;通过这种方式得到的数值是一个整型的数值,我们可通过这种方式得到的数值是一个整型的数值,我们可以声明一个整数型变量来接收这个数值,如:以声明一个整数型变量来接收这个数值,如:int studentNumber=a
8、Student.length;int studentNumber=aStudent.length;n n10.1.3 匿名数组在数组中,有一种称为匿名数组的形式。顾名思义,在数组中,有一种称为匿名数组的形式。顾名思义,也就是没有名字的数组,换句话说,就是声明一个数组但也就是没有名字的数组,换句话说,就是声明一个数组但并没有与一个数组变量关联起来。如:并没有与一个数组变量关联起来。如:new int10,20,30,40,50;new int10,20,30,40,50;根据以前我们的讲述,操纵对象都是通过对象句柄来根据以前我们的讲述,操纵对象都是通过对象句柄来操纵的,那么声明一个匿名数组有什么
9、作用呢?声明一个操纵的,那么声明一个匿名数组有什么作用呢?声明一个匿名数组的目的是将一个新的匿名数组赋值与一个已经存匿名数组的目的是将一个新的匿名数组赋值与一个已经存在的数组变量,而不用再重新生成一个新的数组变量,但在的数组变量,而不用再重新生成一个新的数组变量,但已经存在的数组变量的类型一定要与匿名数组的类型一致。已经存在的数组变量的类型一定要与匿名数组的类型一致。如:如:int array=1,2,3;int array=1,2,3;array=new int10,20,30,40,50;array=new int10,20,30,40,50;这是完全可以的,我们可以不必考虑原来数组的大小
10、,这是完全可以的,我们可以不必考虑原来数组的大小,而重新生成一个新的数组,让已经存在的数组变量重新指而重新生成一个新的数组,让已经存在的数组变量重新指向一个新的数组对象,系统会自动计算新的数组对象的长向一个新的数组对象,系统会自动计算新的数组对象的长度(容量)。下面我们用一个很简单的程序来测试一下。度(容量)。下面我们用一个很简单的程序来测试一下。例例10-210-2程序清单程序清单 ArrayTest.java ArrayTest.java/*/*通过这个程序,我们要测试两个方面:通过这个程序,我们要测试两个方面:*1.*1.匿名数组可以赋值与一个已经存在的数组变量,不关心原来数组变量的容量
11、匿名数组可以赋值与一个已经存在的数组变量,不关心原来数组变量的容量*2.*2.数组变量的类型必须要与匿名数组的类型一致数组变量的类型必须要与匿名数组的类型一致*/*/public class ArrayTestpublic class ArrayTest public static void main(String args)public static void main(String args)ArrayTest aTest=new ArrayTest();ArrayTest aTest=new ArrayTest();int a=1,2,3;/int a=1,2,3;/声明一个新的数组,并
12、赋值与一个新的数组变量声明一个新的数组,并赋值与一个新的数组变量aTest.print(a);aTest.print(a);a=new int 10,20,30,40,50;/a=new int 10,20,30,40,50;/将整型匿名数组赋值与存在的数组变量将整型匿名数组赋值与存在的数组变量a a/a=new String a,b;/a=new String a,b;/将字符型匿名数组赋值与存在的数组变量将字符型匿名数组赋值与存在的数组变量a aaTest.print(a);aTest.print(a);public void print(int array)public void pri
13、nt(int array)System.out.println(System.out.println(数组变量的长度是数组变量的长度是 +array.length);+array.length);System.out.println(System.out.println(数组中的每个元素是:数组中的每个元素是:););for(int i=0;i array.length;i+)for(int i=0;i array.length;i+)System.out.print(+arrayi);/System.out.print(+arrayi);/打印出数组中的每一个元素打印出数组中的每一个元素 S
14、ystem.out.println(n*);System.out.println(n*);n n10.1.4 数组的拷贝由于数组本身属于对象类型,它在Java公开库中有一个类与之相对应Arrays类。当数组变量传递给另外一个数组变量时,它们传递的是对象句柄,也就是按址传递。例如:int a=1,2,3,4,5;int b=a;如果我们访问a4,它是指向5的,如果访问b4,它同样也是指向5的。例例10-310-3程序清单程序清单 ArrayPointer.java ArrayPointer.java/*/*测试数组元素传递方式测试数组元素传递方式*/*/public class ArrayPoi
15、nterpublic class ArrayPointer public static void main(String args)public static void main(String args)ArrayPointer aPointer=new ArrayPointer();ArrayPointer aPointer=new ArrayPointer();int a=1,2,3,4,5;int a=1,2,3,4,5;System.out.println(System.out.println(打印数组打印数组a a中的元素。中的元素。););aPointer.print(a);aPo
16、inter.print(a);int b=a;int b=a;System.out.println(nSystem.out.println(n改变数组改变数组b b中的第三个元素的值。中的第三个元素的值。n);n);System.out.println(System.out.println(打印数组打印数组b b中的元素。中的元素。););b2=a2+10;b2=a2+10;aPointer.print(b);aPointer.print(b);System.out.println(System.out.println(再打印数组再打印数组a a中的元素。中的元素。););aPointer.p
17、rint(a);aPointer.print(a);public void print(int array)public void print(int array)for(int i=0;i array.length;i+)for(int i=0;i array.length;i+)System.out.print(+arrayi);/System.out.print(+arrayi);/打印出数组中的每一个元素打印出数组中的每一个元素 System.out.println(n*);System.out.println(n*);例例10-410-4程序清单程序清单 ArrayCopy.java
18、 ArrayCopy.java/*/*测试数组元素拷贝测试数组元素拷贝*/*/public class ArrayCopypublic class ArrayCopy public static void main(String args)public static void main(String args)ArrayCopy aCopy=new ArrayCopy();ArrayCopy aCopy=new ArrayCopy();int a=1,2,3,4,5;int a=1,2,3,4,5;int b=10,20,30,40,50;int b=10,20,30,40,50;aCopy.
19、copy(a,b);aCopy.copy(a,b);public void copy(int from,int to)public void copy(int from,int to)System.out.println(System.out.println(第一个数组中的元素第一个数组中的元素););for(int i=0;i from.length;i+)for(int i=0;i from.length;i+)System.out.print(+fromi);/System.out.print(+fromi);/打印出数组中的打印出数组中的每一个元素每一个元素 System.out.pr
20、intln(n);System.out.println(n);System.out.println(System.out.println(第二个数组中的元素第二个数组中的元素););for(int i=0;i to.length;i+)for(int i=0;i to.length;i+)System.out.print(+toi);/System.out.print(+toi);/打印出数组打印出数组中的每一个元素中的每一个元素 System.out.println(nnSystem.out.println(nn将第一个数组拷贝到第二将第一个数组拷贝到第二个数组个数组n);n);System
21、.arraycopy(from,0,to,0,5);System.arraycopy(from,0,to,0,5);System.out.println(System.out.println(拷贝完成后第二个数组中的元拷贝完成后第二个数组中的元素素););for(int i=0;i to.length;i+)for(int i=0;i to.length;i+)System.out.print(+toi);/System.out.print(+toi);/打印出数组打印出数组中的每一个元素中的每一个元素 10.1.5 10.1.5 命令行参数命令行参数例例10-510-5程序清单程序清单 Co
22、mmandInput.java CommandInput.java/*/*命令行参数的输入,从命令行输入的任何参数,对于命令行参数的输入,从命令行输入的任何参数,对于JavaJava来讲都是用字符串处理的。来讲都是用字符串处理的。*/*/public class CommandInputpublic class CommandInput public static void main(String args)public static void main(String args)if(args.length=0)if(args.length=0)System.out.println(Syste
23、m.out.println(用户没有输出参数,程序退出!用户没有输出参数,程序退出!););elseelse System.out.println(System.out.println(用户一共输入了用户一共输入了+args.length+args.length+个参数个参数););if(args0.equals(h)if(args0.equals(h)System.out.print(System.out.print(用户好用户好););if(args0.equals(g)if(args0.equals(g)System.out.print(System.out.print(再见再见););
24、for(int i=1;i args.length;i+)for(int i=1;i args.length;i+)System.out.print(+argsi);System.out.print(+argsi);n n10.1.6 10.1.6 数组排序数组排序例例10-610-6程序清单程序清单 ArraySort.java ArraySort.java/*/*数组排序及随机数的产生数组排序及随机数的产生*/*/import java.util.Arrays;import java.util.Arrays;import javax.swing.*;import javax.swing.*
25、;public class ArraySortpublic class ArraySort public static void main(String args)public static void main(String args)String strIn=JOptionPane.showInputDialog(String strIn=JOptionPane.showInputDialog(请输入一共多少个彩球:请输入一共多少个彩球:););String strOut=JOptionPane.showInputDialog(String strOut=JOptionPane.showIn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组和字符串 数组 字符串 PPT 课件

限制150内