第2章-Java语言基础课件.ppt

上传人:可****阿 文档编号:72963549 上传时间:2023-02-14 格式:PPT 页数:77 大小:2.35MB
返回 下载 相关 举报
第2章-Java语言基础课件.ppt_第1页
第1页 / 共77页
第2章-Java语言基础课件.ppt_第2页
第2页 / 共77页
点击查看更多>>
资源描述

《第2章-Java语言基础课件.ppt》由会员分享,可在线阅读,更多相关《第2章-Java语言基础课件.ppt(77页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第2章 Java语言基础v2.1一个最简单的Javav2.2Java语言编程基础v2.3控制语句v2.4类和对象的创建和使用v2.5数组的使用2023/2/1422.1一个最简单的Java应用程序v关于Java版本:v分3个,即J2SE,标准版J2EE,企业版J2ME,嵌入版v关于版本号:1.1,1.2,1.3,1.4,1.5,1.6从1.2起实际上是2.0,一直到最新的6.02023/2/143v关于Java的开发工具v1、JDK和文本编辑器v2、集成开发环境,如Eclipse,JBuider等,推荐使用开源软件Eclipse。目前Eclipse的版本为3.6,可以到网站去下载。另外,MyE

2、clipse是基于Eclipse的商业软件,功能更强大,使用更方便。2.1一个最简单的Java应用程序vJava有两类程序,一类是应用程序Application,类似于其他高级语言程序,它的执行入口点是main()方法;另一类是小应用程序Applet,它通过浏览器下载执行,其中没有main()方法。这里先介绍第一类程序,2023/2/146classHelloJava/声明类publicstaticvoidmain(Stringargs)/main方法System.out.println(Hello,Java!);/在屏幕上输出Hello,Java!2023/2/147(1)public:是一

3、个访问控制关键字。一个类成员前面有public修饰,说明该成员能够被声明该类之外的代码访问。main()必须被定义为public类型,因为当程序开始执行时它需要被它的类之外的代码调用。(2)static:说明main()方法可以不需要经过对象的实例化过程而被直接调用。(3)void:说明main()方法没有返回值。(4)main:方法名称。(5)Stringargs:说明main()方法的输入参数列表形式,是一个数组列表。【说明说明】一个Java源程序可以有main()方法,也可以没有main()方法。如果该源程序所生成的类文件要在命令行方式下直接运行,则必须有main()方法。2023/2/

4、148v程序的编译与运行Sun公司为Java程序员提供了一个免费的Java程序开发包(JavaDevelopmentKit,JDK),其中包括了Java编译器命令“Javac”,以及Java执行命令“Java”,还有帮助文档生成器命令“Javadoc”等等,所有这些命令都可以在命令行下运行。运行及配置JDK工具的详细介绍见附录C。下面简单说明例2-1程序上机的主要步骤。(1)在命令行界面中键入JavacHelloJava.java编译源程序。(2)在命令行界面中键入JavaHelloJava运行程序,程序的运行结果如图2023/2/14102.2.1常量和变量1、常量v常量是指直接用在程序中、

5、在程序运行过程中固定不变的量。变量是指在程序运行过程中其值可以变化的量。vJava语言常量包括整数、浮点数、布尔、字符、字符串等几种类型。2023/2/1411v整型常量 整型常量分类 表示形式 举例十进制整数 十进制表示形式123、-456、0八进制整数以0开头0123表示十进制数83十六进制整数以0 x或0X开头0 x123表示十进制数291 表示形式 举例十进制数形式0.123、.123、123.、123.0科学计数法形式123e3、123E3v实型常量2023/2/1413v字符串常量。与C/C+相同,Java的字符串常量是用双引号(“”)括起来的一串字符,如“Hello,Java!”

6、。但不同的是,Java中的字符串常量是作为String类的一个对象来处理的,而不是一个数据。v布尔型常量。布尔型数据只有两个值,true和false,且它们不对应于任何整数值。在控制语句中常用到它。2023/2/1415v说明:说明:(1)变量修饰符是可选项,说明了变量的访问权限和某些规则,关于变量修饰符将在第3章详细讲解。(2)变量类型说明符,确定了变量的取值范围以及对变量所能进行的操作规范,关于变量类型将在本章中详细讲解。(3)变量列表,由一个或多个变量名组成。当要定义多个变量时,各变量之间用逗号分隔。(4)初值是可选项,变量可以在定义的同时赋初值,也可以先定义,在后续程序中赋初值。202

7、3/2/1416v标识符的命名规则标识符的命名规则(1)标识符由字母、下划线、$、数字以及所有在十六进制0 xc0前的ASCII码组成;(2)首字符必须是字母、下划线或$;(3)不能使用关键字;(4)区分大小写。合法标识符非法标识符Trytry#group_77groupOpendooropen-door2023/2/1418v基本数据类型类型关键字字节数位数数的表示范围字节byte8-27 27-1 (默认:0)短整数short216-215215-1(默认:0)整数int432-231231-1(默认:0)长整数long864-263263-1(默认:0)字符char216u0000 uf

8、fff(默认:u0000)浮点数float4323.4e-38 3.4e+38(默认:0.0)双精度数double8641.7e-308 1.7e+308(默认:0.0)布尔boolean1true,false(默认:false)2023/2/1419v复合数据类型:包括类(classs)、数组、接口(interface)等类型。其中,类是一种自行定义的新数据类型,包括Java平台已有的定义和编程人员自定义两种形式。例如,把对基本数据类型的所有属性和方法封装起来形成一个类,就形成了基本数据类型的包装类型,包括字节(Byte)、短整数(Short)、整数(Integer)、长整数(Long)、浮

9、点数(Float)、双精度浮点数(Double)、字符(Character)和布尔(Boolean)等。2023/2/1420v数据类型的注意事项数据类型的注意事项(1)Java不支持C/C+中的指针类型、结构体类型和共用体类型。(2)在C/C+语言中,某些基本数据类型(如整型)所占字节大小根据执行环境的规定而变化。Java中,因为可移植性的要求,所有的基本数据类型所占字节大小不管是基于什么平台,总是一致的。2023/2/1421v了解这些基础知识后,回到2.2.1节中提出的问题中。现在,我们可以在main方法中定义两个变量,分别来存放华氏和摄氏温度值,考虑到日常生活中,人们考虑温度仅仅考虑整

10、数部分值,所以在代码中将这两个变量的数据类型取为整型。源代码如下:classConvertTemppublicstaticvoidmain(Stringargs)/main方法intf=200;/定义一个变量存放华氏温度值,并给它赋初值intc;/定义一个变量存放转换后的摄氏温度值2023/2/14222.2.3 运算符和表达式运算符和表达式Java语言的运算符主要有以下几类:(1)算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(+)、自减(-)共7种。(2)赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/

11、=,%=)和复合位运算赋值(&=,|=,=,=,=)三类共11种。(3)逗号运算符(,):用于把若干表达式组合成一个表达式。(4)关系运算符:用于比较运算。包括大于()、小于(=)、小于等于(=)和不等于(!=)6种。(5)逻辑运算符:用于逻辑运算。包括与(&)、或(|)、非(!)3种。(6)条件运算符(?:):这是一个三元运算符,用于条件求值。(7)位运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非()、位异或()、左移()、算术右移()6种。(8)其它特殊运算符:有括号()、下标、instanceof、new等。运算符与一定的运算量按照相应的语法规则就组成了表达式

12、,从而完成相应的运算。其中,运算量可以为常量、变量、函数,甚至可以为表达式。2023/2/1424v算术运算符算术运算符一元算术运算符如表所示运算符运算符实际实际操作操作示示 例例-改变整型数符号 -i+加1i+-减1i-+i前缀:使用i之前,先使i值加1i+后缀:使用i之后,再使i值加1-i前缀:使用i之前,先使i值减1i-后缀:使用i之后,再使i值减12023/2/1425v自增和自减运算符示例int i,x=1;功功 能能i=x+;把x的值赋给i以后再x加1运算后,i的值为1,x的值为2i=+x;先把x加1,再把新的x值赋给i运算后,i的值为2,x的值为22023/2/1426v二元算术

13、运算符运算符运算符实际实际操作操作示示 例例+加运算a+b-减运算a-b*乘运算a*b/除运算a/b%取模运算a%b2023/2/1428v程序的运行结果如图这里有什么问题呢?2023/2/14292.2.4 类型转换类型转换v有时,在进行某种运算时,会遇到不同类型的数据,则需要类型转换。v类型转换分为自动类型转换、强制类型转换两种。2023/2/1431v为了对例中的5/9这个表达式进行准确计算,保留小数点后面的值,可以将这个表达式改为5.0/9,该表达式中参与运算的量的数据类型不同。5.0的数据类型是double型,按照前面的自动转换规则中的第4条规则,如果该表达式的最终数据类型为doub

14、le,那么就能够得到准确的运算结果。2023/2/1432【例例2-4】准确计算的温度转换示例程序。源代码如下:classtestpublicstaticvoidmain(Stringargs)System.out.println(5.0/9=+(5.0/9);2023/2/1433现在我们将程序修改如下:【例例2-5】有问题的温度转换程序。源代码如下:classConvertTemppublicstaticvoidmain(Stringargs)intf=200;/定义一个变量存放华氏温度值,并给它赋初值intc;/定义一个变量存放转换后的摄氏温度值c=(5.0/9)*(f-32);Syst

15、em.out.println(摄氏温度值=+c);2023/2/1434v出现该问题的原因在于,Java语言对数据类型兼容性的要求比其它语言要严格。例如,在C/C+中,能把浮点型数据赋给一个整型数据,但在Java中则视为语法错误。在上面的赋值语句中,赋值号左边的变量c的数据类型是整型,而右边表达式的数据类型是double型,所以编译不能成功。要使这个问题得到解决,可以采用强制类型转换的方法。2023/2/1435v2强制类型转换强制类型转换为了完成两种不兼容类型之间的转换,就必须进行强制类型转换。所谓强制类型转换只不过是一种显式的类型变换。它的一般格式如下:(目标类型目标类型)表达式表达式其中

16、,目标类型指定了要将指定值转换成的类型。例如,例2-5的赋值语句可以改为如下语句就可以解决问题了:c=(int)(5.0/9)*(f-32);2023/2/1436v问题的解决经过相应知识点的学习,现在我们解决2.2.1节所提出问题。其源代码如下:classConvertTemppublicstaticvoidmain(Stringargs)intf=200;intc;c=(int)(5.0/9)*(f-32);System.out.println(摄氏温度值=+c);2023/2/1437今天到这里2.3 控制语句控制语句v语句是构造程序最基本的单位,程序运行的过程就是执行程序语句的过程。语

17、句执行的次序称之为流程控制或控制流程。在前面的程序中,语句都是顺序执行的。我们是否能够改变程序顺序执行的流程呢?例如,当满足某个条件时,执行某种运算或重复执行某种运算。答案是肯定的,流程控制语句就是用于修改程序的执行路径。v与其它编程语言一样,Java程序结构也分为三种:顺序结构、选择结构和循环结构,在三种程序结构中,顺序结构比较简单,而选择结构和循环结构是由Java语言的控制语句来实现的。Java控制语句可以分为选择语句、循环语句和跳转语句三种。【例例2-6】输出19492006年的所有年份中的闰年。【分析分析】闰年的条件是:能被4整除、但不能被100整除,或者能被400整除。对于这个问题,

18、我们分为两个子问题来考虑,首先考虑如何对任意一个已知的年份求解并判断其是否为闰年,然后,再考虑如何重复的对所有年份是否为闰年进行判断。对第一个问题的解决,就是要进行年份是否符合闰年条件的判断,若符合,则输出相应的提示信息,若不符合,则不输出信息,所以,要用到选择语句;在解决第一个问题已解决的基础上,对第二个问题的解决就转换成了是不断重复第一个问题的解决步骤的不断重复了,所以,要用到循环语句。因此,下面介绍选择语句和循环语句的相关语法。2.3.1问题的提出与分析问题的提出与分析2023/2/14401if-else语句语句if-else语句的一般格式为:语句的一般格式为:if(条件)(条件)语句

19、语句1;else语句语句2;2.嵌套嵌套if语句语句现实生活中的各种条件是很复杂的,在一定的条件下,又需要满足现实生活中的各种条件是很复杂的,在一定的条件下,又需要满足其它的条件才能确定相应的操作。为此,其它的条件才能确定相应的操作。为此,Java提供了提供了if语句的嵌套语句的嵌套功能,也即一个功能,也即一个if语句能够出现在另一个语句能够出现在另一个if语句或语句或if-else语句里。语句里。2.3.2 选择语句选择语句2023/2/1441【例例2-7】对于本节提出的实例中的第一个问题,可以用if-else语句编写判断是否闰年的程序。源代码如下:classleapYearpublics

20、taticvoidmain(Stringargs)intyear=1989;if(year%4=0&year%100!=0)|(year%400=0)/闰年的条件满足System.out.println(year+是闰年!);elseSystem.out.println(year+不是闰年!);2023/2/1442vswitch语句语句switch语句又称多分支选择语句,与if-else语句一样,是Java语言的条件选择语句,if语句是判断条件的值,再从两个程序块中选择其中一块执行,只能出现两个分支,而switch语句可存在多个分支。处理多种分支情况时,用switch语句代替if语句可以简化

21、程序,使程序结构清晰明了,可读性增强。switch语句的一般格式为:switch(条件条件)case 值值1:语句语句1;break;case 值值2:语句语句2;break;case 值值n:语句语句n;break;default:缺省语句缺省语句;2023/2/1443【其中其中】(1)条件为一表达式,值(1n)是一个常量值,条件表达式的值和值(1n)常量值的类型必须一致。(2)各case子句中的值(1n)常量值不能相同,类型必须一致。(3)语句可以是单条语句,也可以是复合语句,复合语句不必用括起来。缺省语句可以省略。switch语句的执行过程为:将条件表达式的返回值与case的每个值比较

22、,如果相等就执行该case语句后面的语句,执行完语句后,执行break语句,跳出switch语句;如果没有一个case的值与表达式的返回值相等,则执行缺省语句;如果没有缺省语句,则直接跳出switch语句,不进行任何操作。2023/2/1444【例例2-11】用switch语句来编写程序,给定一个数字月份,输出该月份的英文。源代码如下:classmonthNumpublicstaticvoidmain(Stringargs)intmonth=4;switch(month)case1:System.out.println(January);break;case2:System.out.print

23、ln(February);break;case3:System.out.println(March);break;case4:System.out.println(April);break;case5:System.out.println(May);break;case6:System.out.println(June);break;case7:System.out.println(July);break;case8:System.out.println(August);break;case9:System.out.println(September);break;case10:System.

24、out.println(October);break;case11:System.out.println(November);break;case12:System.out.println(December);break;2023/2/14451for循环语句循环语句Java语言的for语句与C语言的用法完全一致。其一般格式为:for(表达式表达式1;表达式表达式2;表达式表达式3)语句或块语句或块;2while循环语句循环语句while循环语句的一般格式为:循环语句的一般格式为:while(布尔表达式布尔表达式)语句或块语句或块;3.do-while循环语句循环语句do-while循环语句的

25、一般格式是:循环语句的一般格式是:do语句或语句或语句语句块块;while(布尔表达式布尔表达式);2.3.3 循环语句循环语句2023/2/1446【例例2-12】用for语句来输出19492006年的所有年份中的闰年信息。源代码如下:classleapYearpublicstaticvoidmain(Stringargs)intyear=0;for(year=1949;year=2006;year+)if(year%4=0&year%100!=0)|(year%400=0)/闰年的条件满足System.out.println(year+是闰年!);elseSystem.out.printl

26、n(year+不是闰年!);2023/2/1447本节主要介绍本节主要介绍break和和continue语句,它们可以被用在更语句,它们可以被用在更深层次的控制循环语句中。其语句的一般格式为:深层次的控制循环语句中。其语句的一般格式为:break标号标号;continue标号标号;其中,不带标号的其中,不带标号的break语句,跳出它所在的循环语句或语句,跳出它所在的循环语句或switch语句,并从紧跟该循环语句或语句,并从紧跟该循环语句或switch语句后的第语句后的第一条语句处执行;不带标号的一条语句处执行;不带标号的continue语句,用来结束本语句,用来结束本次循环,跳过循环体中后面

27、尚未执行的语句,接着进行次循环,跳过循环体中后面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。终止条件的判断,以决定是否继续循环。2.3.4 特殊的循环流程控制特殊的循环流程控制2023/2/14482.4 类和对象的创建和使用类和对象的创建和使用v把众多的事物归纳、划分成一些类是人类在认识客观世界时经常采用的思维方法。分类的原则是抽象。类是具有相同属性和服务的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。类是对某种类型的对象定义变量和方法的原型。2023/2/1449【例例2-19】定义平面上一个点类Point。并为该类定义如下两

28、个方法:某点到原点的距离distanceToOrigin()和某点到另一点的距离distanceTo(Point p)。然后再创建几个点对象来求它们之间的距离。【分析分析】在这个例子中,涉及到类的定义,对象的创建和使用等相关知识,下面,我们将分别学习这些知识来解决本问题。2.4.1 问题的提出与分析问题的提出与分析2023/2/1450类是组成类是组成Java程序的基本要素。在语法上,类由类声明和程序的基本要素。在语法上,类由类声明和类体两部分构成。最基本的定义格式为:类体两部分构成。最基本的定义格式为:class类名类名类体类体类主要有包括以下两类型的成员:类主要有包括以下两类型的成员:(1

29、)域)域(field):与类及其对象相关联的数据变量,其中保:与类及其对象相关联的数据变量,其中保存着类或对象的状态。存着类或对象的状态。(2)方法)方法(method):包含类的可执行代码并定义了对象:包含类的可执行代码并定义了对象的行为。的行为。2.4.2 类的定义类的定义2023/2/1451一个对象的生命期包括三个阶段:生成、使用和清除。对象的生成包括声明、实例化和初始化三方面的内容。其一般格式为:类名类名对象名对象名=new类名类名(参数表参数表);2.4.3 对象的生成对象的生成2023/2/1452一个对象的引用可被存储在一个变量里,一个对象的引用可被存储在一个变量里,通过运算符

30、通过运算符“.”可以实现对象的成员变量可以实现对象的成员变量的访问和方法的调用。的访问和方法的调用。要访问对象的某个变量,其格式为:要访问对象的某个变量,其格式为:引用名引用名.成员变量名称成员变量名称其中,引用名是对象的一个引用,它可以其中,引用名是对象的一个引用,它可以是一个已生成的对象,也可以是能够生成是一个已生成的对象,也可以是能够生成对象引用的表达式。对象引用的表达式。2.4.4 对象的使用对象的使用2023/2/1453classPointdoublex,y;/两个域Point(doublex1,doubley1)x=x1;y=y1;doubledistanceToOrigin()

31、/某点到原点的距离returnMath.sqrt(x*x+y*y);doubledistanceTo(Pointp)/某点到另一点p(Point类对象)的距离 returnMath.sqrt(x-p.x)*(x-p.x)+(y-p.y)*(y-p.y);publicstaticvoidmain(Stringargs)Pointp=newPoint(3,5);Pointp1=newPoint(2,4);System.out.println(“p点到原点的距离=”+p.distanceToOrigin();System.out.println(“p点到p1点的距离=”+p.distanceTo(p

32、1);2023/2/14542.5 数组的使用数组的使用v数组是由若干同类元素组成的对象。数组能表示非常广泛范围的对象,如一个整数向量可以表示成由整数组成的数组;矩阵由若干行向量组成,一个矩阵又可以表示成由向量构成的数组;班级的学生成绩表可以表示成由若干确定的学生成绩单组成的数组,其中每个学生成绩单又由若干课程的成绩组成。数组的每个元素的数据类型相同,元素个数固定,其元素按顺序存放,每个元素对应一个序号(称为下标),各元素按下标存取(引用)。数组元素的存储顺序与其下标对应。2023/2/14552.5.1 问题的提出与分析问题的提出与分析本节将中通过两个实例程序来学习数组。【例例2-20】用数

33、组来计算Fibonacci数列1、1、2、3、5、8、的前20项值,并在屏幕上进行输出。【分析分析】利用数组可以存储Fibonacci数列的各项值,程序所需要完成的功能是进行计算数列的项值功能,将相应的Fibonacci数并存放到一维数组元素中,然后输出数组的所有数组元素。【例例2-21】在屏幕上输出杨辉三角形的前六6行。【分析分析】本例的解决思路和上例一样,也不同的是将杨辉三角形的数存放到相应的二维数组的数组元素中,然后输出二维数组。的所有数组元素来实现在屏幕上输出杨辉三角形的功能。2023/2/14562.5.2 数组的创建数组的创建v与C/C+不同,Java数组的分配是通过使用new运算

34、符建立数组然后把它赋给变量,格式如下:数组名数组名=new 数组元素的类型数组元素的类型数组元素的个数数组元素的个数;a=newint10;v该行代码的功能创建了包括10个整型变量的数组并把它赋给引用a,然后通过引用可以用下标来引用数组元素,例如a0,a1,.,a8,a9,注意下标是从第一个元素的0开始,到数组个数减1。Java中,数组实际是由若干同类元素组成的对象,有相应的属性,例如,可以用a.length来读取数组所表示的长度。2023/2/1457现在回到Fibonacci数列的例子来看,我们可以声明一个长度为20的数组。程序如下所示:classFibonaccipublicstatic

35、voidmain(Stringargs)intf=newint20;2023/2/14582.5.3 数组的使用数组的使用vJava中,数组元素的使用都可以通过数组名与加下标的方式来使用数组元素引用。一维数组通过下标符访问自己的元素,如boy0、boy1等。需要注意的是:下标从0开始,到数组个数减1,因此,数组若是7个元素,下标到6为止,。如果你将来使用下标超过6范围将会发生异常。2023/2/1459【例例2-20】Fibonacci数列计算程序。源代码如下:classFibonaccipublicstaticvoidmain(Stringargs)intf=newint20;f0=f1=1

36、;for(inti=2;if.length;i+)fi=fi-2+fi-1;for(inti=0;if.length;i+)System.out.print(“t”+fi);2023/2/1460为了对一维数组有更好的理解,我们再看一个例子。【例例2-21】一维数组的示例程序。源代码如下:classarrayTestpublicstaticvoidmain(Stringargs)intnum;num=newint5;for(inti=0;inum.length;i+)System.out.println(num+i+=+numi);2023/2/14612.5.4二维数组的创建二维数组的创建和

37、前面的一维数组类似,用数组名和两个下标就能唯一确定数组元素的数组称为二维数组。v1.数组的定义格式数组的定义格式数组元素类型数组元素类型 数组名数组名 ;数组元素类型数组元素类型 数组名数组名;例如:floatf;同样,在声明数组时方括号里可以不指定长度。2023/2/1462v2.数组的创建数组的创建在Java中,多维数组实际上是数组的数组。创建多维数组时要将每个维数放在它们各自的方括号中。例如,下面语句创建了一个名为twoD的二维数组变量。inttwoD=newint45;该语句分配了一个4行5列的数组。此外,当你给多维数组分配内存时,你只需指定第一个(最左边)维数的内存即可,可以单独地给

38、余下的维数分配内存。例如,下面的程序在数组twoD被定义时给它的第一个维数分配内存,对第二维则是手工分配地址。inttwoD=newint4;twoD0=newint3;twoD1=newint4;twoD2=newint5;twoD3=newint6;当你手工分配内存时,就不需要给第二维分配相同数量的元素。它的第二维的大小可以是不相等的。2023/2/1463【例例2-22】用二维数组输出杨辉三角形。源代码如下:publicclassYangpublicstaticvoidmain(Stringargs)intpas=newint6;/声明二维数组for(inti=0;ipas.length

39、;i+)/计算每一行的值pasi=newinti+1;/动态分配每一行的列数pasi0=1;pasii=1;for(intj=0;j=1&i1)pasij=pasi-1j-1+pasi-1j;/计算相应项的值for(inti=0;ipas.length;i+)/在屏幕上输出杨辉三角形for(intj=0;jpasi.length;j+)System.out.print(pasij);System.out.print(t);System.out.println();2023/2/14642.6 字符串的使用字符串的使用v字符串是一个字符序列。Java提供一个内置的String类来处理字符串。一个

40、String对象代表一个字符串,而且有时候它可以作为字符串被引用。Java提供的标准包Java.lang中封装了类String和StringBuffer,分别用于处理不变字符串和可变字符串。2023/2/14652.6.1问题的提出与分析问题的提出与分析v【例例2-23】凯撒密码问题。凯撒密码是罗马时期凯撒创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如,如果向右移动2位,则字母A将变为C,字母B将变为D,字母X变成Z,字母Y则变为A,假如有个明文字符串“Hello”用这种方法加密的话,将变为密文:“Jgnnq”;如果要解密,则只要将字母向相反方向移动同样

41、位数即可。如密文“Jgnnq”每个字母左移两位变为“Hello”。这里,移动的位数“2”是加密和解密所用的密钥。要求用Java语言编程来实现加密和解密这一过程。v【分析分析】首先,将要加密的内容和解密的内容可以看作为一个字符串,由于凯撒密码器的移位是针对字符的,因此需要将待字符串中的内容中每个字符取出,然后针对每个字符分别加以移位,这就需要使用String类的相应方法。2023/2/14662.6.2 String类的介绍类的介绍vJava提供的标准包Java.lang中封装了类String和StringBuffer,分别用于处理不变字符串和可变字符串。不变字符串是指字符串一旦创建,其内容就不

42、能改变。v系统为程序中出现的字符串常量自动创建一个String对象。2023/2/1467v1字符串变量的声明字符串变量的声明String 字符串变量名字符串变量名;v2创建字符串创建字符串例如,创建一个空的字符串:Strings1=newString();也可以用字符数组创建字符串:charchars=a,b,c;Strings2=newString(chars);【说明说明】字符串类还有其它相应的构造方法,详情请参考API文档。v3初始化字符串初始化字符串可以直接用字符串常量来初始化一个字符串:Strings3=HelloWorld!;【说明说明】String类的对象实例是不可改变的,一旦

43、创建,就确定下来。2023/2/1468v4String类中常用方法类中常用方法String类提供的方法很多,下面介绍一些常用的方法。更多相关的方法介绍,请参考API文档。(1)返回字符串的长度方法length(),其类型为int。调用形式:str.length()其中:length为返回值,str为字符串对象。(2)连接字符串。concat()方法将两个字符串连接起来。调用形式一:str1.concat(Stringstr2),该方法将两个字符串连接起来。调用形式二:str1.concat(字符串常量),该方法将字符串与字符串常量连接起来。2023/2/1469【例例2-24】使用字符串方法

44、的示例程序。源代码如下:publicclassstringTestpublicstaticvoidmain(Stringargs)Stringstr=ThisisaTest!;str=str.replace(s,a);System.out.println(str=+str);Stringstr1=str.toLowerCase();Stringstr2=str.toUpperCase();System.out.println(str1=+str1);System.out.println(str2=+str2);str1=str.trim();System.out.println(str1=+s

45、tr1);2023/2/14702.6.3问题的解决问题的解决v凯撒密码问题的程序大家看书,可能现在有些地方看不懂,第三章会继续深入探讨关于类和对象。2023/2/14712.6.4 对象转化为字符串对象转化为字符串v对于所创建的大多数类,通常想用自己提供的字符串表达式重写toString()方法。toString()方法的一般形式为:String toString()v实现toString()方法,仅仅返回一个String对象,该对象包含描述类中对象的可读的字符串。通过对所创建类的toString()方法的重新改写。2023/2/14722.7 包包 v包(package)是类的容器,用来保

46、存划分的类名空间,它提供了访问保护和名字空间管理。Java编译器使用文件系统目录来保存包。v为了更好地组织类,Java编程语言提供package机制作为把相关类组成组的途径。而且,编程时常常要用到系统提供的包。2023/2/1473v包的定义包的创建很简单,只要包含一个package命令作为一个Java源文件的第一句就可以了。该文件中定义的任何类将属于指定的包。package语句定义了一个存储类的名字空间。如果你省略package语句,类名被输入一个默认的没有名称的包。通常将很多功能相近的类和接口放在同一个包中,以方便管理和使用。创建包的一般格式为:package 包名包名1.包名包名.包名包

47、名.2023/2/1474v【注意注意】(1)程序中如果有package语句,该语句一定是源文件中的第一条可执行语句,它的前面只能有注释或空行。(2)一个文件中最多只能有一条package语句。(3)包的名字有层次关系,各层之间以点分隔。packagepkg1.pkg2.pkg3;(4)通常包的名字全部用小写字母。2023/2/1475v包的引入1第一种形式第一种形式import 包名包名.类名类名这种形式只允许用类名访问包中的类。如果使用了importjava.awt.TextField语句,则可在程序中书写如下代码为:TextFields=newTextField(0,4);没有用impo

48、rtjava.awt.TextField这条语句的话,则在程序中需要指明一个类的全称:java.awt.TextFields=newjava.awt.TextField(0,4);2第二种形式第二种形式import 包名包名.*这种形式使得该包中的所有类都可以直接用类名来访问。“*”号可能会增加编译时间,特别是在引入一个大包时。2023/2/1476v常用的Java标准包JDK为我们提供了很多标准的Java类和接口,这些包是写Java程序所必需的。标准Java库中常用的包有:java.applet、java.awt、java.io、java.lang、和java.util等等。其中java.applet包含了一些设计小应用程序(Applet)的类和接口;java.awt是一个窗口工具箱包(AbstractWindowToolkit),里面是一些GUI界面相关的类;java.io包支持输入输出2023/2/1477结束

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com