JAVA产品库存管理系统面向对象设计_第1页
JAVA产品库存管理系统面向对象设计_第2页
JAVA产品库存管理系统面向对象设计_第3页
JAVA产品库存管理系统面向对象设计_第4页
JAVA产品库存管理系统面向对象设计_第5页
已阅读5页,还剩141页未读 继续免费阅读

下载本文档

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

文档简介

情境3产品库存管理系统面向对象设计学习情境描述要求根据第一个情境的需求分析结果,学生成立项目开发小组,划分角色,推选项目经理和CTO(首席技术师),程序员。经过讨论给出产品库存管理系统中的实体类:入库单、出库单、库存和用户类和控制类接口的详细设计;利用情境2搭建好的环境,对每个类予以编程实现。所需知识类的定义与对象的创建构造方法的作用及应用面向对象三大特征:封装性、继承性和多态性的Java语言实现抽象类与接口的应用包的创建与使用访问控制符的应用异常处理重点及难点构造方法的作用及应用面向对象三大特征:封装性、继承性和多态性的Java语言实现抽象类与接口的应用异常处理能力目标培养学生面向对象的编程能力培养学生良好的团队合作意识及沟通协调能力、接收新知识的能力培养学生分析问题、解决问题的能力、创新能力以及逻辑思维能力

任务一用Java语言描述现实世界中的Person。学生讨论确定Person的特征

譬如:name-姓名,age-表示年龄,sex-表示性别等。确定Person相关的行为

譬如:吃饭、睡觉等。用Java语言实现Person类复习引入面向对象与面向过程的区别?面向对象编程面向对象编程是软件设计与实现的有效方法,它将客观世界中存在的事物看作对象,每个客观事物都有自己的特征和行为。对象的基本概念 变量方法在现实生活中在计算机程序中客观世界的实体程序中对象对象具有两方面的含义(考虑从哪些方面描述对象)面向对象的基本概念类是抽象的,对象是具体的具有相同特征和行为的对象被抽象为类。类是对象的模板,包括一个对象的所有数据和代码。类的示例形状类动物类汽车类对象对

象面向对象编程的核心为计算机应用程序提供实用基础完成特定任务表示现实世界中的实体“对象是是存在在的具具体实实体,,具有有明确确定义义的状状态和和行为为。””对象的的示例例收银员员对象象顾客对对象顾客姓名::朱丽丽叶年龄::28体重::52千克克操作::购买商商品状态姓名::布兰兰尼职衔::收银银员年龄::35体重::60千克克操作::收款打印帐帐单行为消息传传递“消息指指一个个对象象为执执行某某项特特定操操作而而向另另一个个对象发发送的的请求求”消息传递当需要执行一项特定操作时,通过向已为其定义此项操作的对象发送消息来请求对象之间通过传递消息实现相互通信类和对对象的的示例例雇员收银员员系统管管理员员仓库管管理员员促销员采购经理面向对对象技技术的的实现现对象类实例化抽象计算机世界实体抽象数据类型现实世界抽象映射计算机逻辑的实现对象、、类和和实体体的关关系类是创创建对对象的的模板板,对对象是是类的的实例例类的基基本概概念现实生生活中中的对对象classCar{intcolor;intname;intspeed;voidbrake(){……}voidspeedUp(){……}voidslowDown(){……}}抽象数数据类类型程序中中的对对象映射描述实现类定义义类定义中必须要写类名,应该使用Java语言合法的标识符来命名类名不能与java中已定义好的类名相同格式:[修饰符符]class类名[extends父类名名][implements接口名名表]{成员变变量声声明方法成成员声声明}其中class、extends和implements都是Java的的关键键字。。类的声明类体类中的的方法法6-1方法的定义方法的的名称称参数列列表方法的的主体体方法返返回的的对象象类型或原原始类类型方法体体若局部变量与类的成员变量同名,则类的成员变量被隐藏。方法体体是对对方法法的实实现,,它包包括局局部变变量的的声明明以及及所有有合法法的Java指指令。。方法法体中中声明明的局局部变变量的的作用用域在在该方方法内内部。类的定定义举举例classCar{intcolor;intname;intspeed;voidbrake(){……}voidspeedUp(){……}voidslowDown(){……}}类的实实现任务一一实现现classPerson{Stringname;intage;Stringsex;publicvoideat(){System.out.println("It'sdelicious!");}}【实战】:定定义一个名为为Rectangle表表示长方形的的类,它包含含double类型的长长length和宽width两个个数据成员和和设置长方形形长宽值的方方法setDim()、、计算长方形形面积的方法法area()。类的实现对象的创建实例化初始化对象的声明对象的创建声明类名对对象名名;声明并不为对对象分配内存存空间,而只是分配一个个引用空间实例化类名对象象名=new类类名()例:Personp=newPerson();运算符new为对象分配配内存空间,,它调用对象象的构造方法法,返回引用用初始化另外执行构造造方法,可进进行初始化当一个变量被被创建时,会会对其中各种种类型的成员员变量自动按按下表进行初初始化赋值。对象的使用访问对象成员员的一般形式式为:对象名.成员员变量名对象名.成员员方法名()运算符”.””在这里称为为成员运算符符创建对象举例例classTestPerson{publicstaticvoidmain(String[]args){Personp1=newPerson();="Tom";p1.age=12;p1.sex="male";p1.eat();}}按照前面设计计Person类来充当当生产车间,,创建Person对象象任务二通过构造方法法,初始化Person类的实例,,为其成员变变量赋初值。。构造方法在Java中中,任何变量量在被使用前前都必须先设设置初值。Java提供供了为类的成成员变量赋初初值的专门功功能:构造方法。构造方法的特特点构造方法名与与类名相同。。构造方法不返返回任何值,,也没有返回回类型。每一个类可以以有零个或多多个重载的构构造方法。若若没有为一个个类显式的定定义构造方法法,则当创建建类对象时,编译器将自自动为它创建建一个没有参参数的默认构构造方法.构造方法只能能在创建对象象时通过new关键字来来自动调用。注意:一旦我们自己定义了构造方法,系统将不再为我们提供默认的不带参数的构造方法。classPerson{Stringname;intage;Stringsex;publicPerson(Strings1){name=s1;}publicPerson(Strings1,intx){name=s1;age=x;}任务二实现publicPerson(Strings1,intx,Strings2){name=s1;age=x;sex=s2;}publicvoideat(){System.out.println("It'sdelicious!");}}classTestPerson{publicstaticvoidmain(String[]args){Personp1=newPerson("Tom");Personp2=newPerson("John",20);Personp3=newPerson("Bob",22,"male");System.out.println(+p1.age+p1.sex);System.out.println(+p2.age+p2.sex);System.out.println(+p3.age+p3.sex);}}通过构造方法法赋初值This引用用句柄构造方法的形形式参数与类类的成员变量量名相同在构造方法中中调用其他重重载的构造方方法,用this(参数数列表)的形形式自主学习内部类的定义和使用。面向对象的基基本特征封装性、继承承性、多态性性是面向对象象的三个主要要特性。特征描述封装性通过提供一个或多个公有(public)方法,实现对该类的私有成员变量的访问和修改继承性通过extends关键字实现子类继承父类的所有非私有成员多态性通过方法重载和方法重写实现方法的多态性封装性的引入入classPerson{Stringname;intage;Stringsex;publicvoideat(){ System.out.println("It'sdelicious!");}}classTestPerson{publicstaticvoidmain(String[]args){Personp1=newPerson();="Tom";p1.age=-12;//非法的的值p1.sex="male";System.out.println(““p1的年龄龄是:”+p1.age);}}通过实例启发发学生思考为为什么引入封封装性?封装性的实现现私有数据公有方法外部世界所谓封装,就就是信息隐藏藏,隐藏对象的实实现细节,不让用户看到到封装的示例3-1接口

采购经理罗杰斯先生法拉力公司.迪斯尼汽车公公司.市场经理雪莉女士要求

封装的示例3-2有选择地提供供数据法拉力公司迪斯尼汽车公公司公共电话号码电子邮箱产品种类私有备件的制造方法备件库存备件的制造成本公共电话号码电子邮箱汽车种类私有汽车的组装方法汽车库存汽车的组装成本封装的示例3-3实体法拉力公司实体迪斯尼汽车公公司

AutiLtd.ButoLtd.属性电话号码电子邮箱产品种类现有存货数量雇员详情所需物料详情属性电话号码电子邮箱汽车种类汽车规格雇员详情库存详情经销商详情方法接收订单备件的制造方法计算备件的制造成本计算利润率方法发出订单汽车的组装方法计算汽车的组装成本计算工资发出订单编制必要报告设置器和访问问器方法设置私有成员变量值的方法称为设置器方法,通常为:publicvoidsetX(类型x){this.x=x; }访问私有成员变量值的方法称为访问器方法,通常为:public类型getX() {returnx; }封装举例classPerson{privateintage;publicvoidsetAge(inti){ if(i<0||i>130)return;age=i;}publicintgetAge(){ returnage;}}将其设为私有有的方法设为公有有封装的好处封装的优点可进行数据检查便于修改,增强代码的可维护性隐藏类的实现细节任务三定义Person类的子子类Student类继承性类继承是指一一个类可以继继承其他类的的非私有成员员,实现代码码复用。被继承的类称称为父类,继继承父类后产产生的类称为为子类。继承父类子类父类/子类是相对的Cow类Lion类Tiger类Animals类Carnivorous类Herbivorous类Coat类继承的实现classSubClassextendsSuperClass{……}Java中的的继承是通过过extends关键字字来实现的。。关键字任务三实现classStudentextendsPerson{Stringschool;publicvoidstudy(){System.out.println("Studding");}publicstaticvoidmain(String[]args){Personp=newPerson();="Tom";p.age=30;p.getInfo();Students=newStudent();="John";s.age=16;s.school=“清清华大学”;s.getInfo();s.study();}}继承承的的特特点点继承的特点具有层次结构子类继承了父类的非私有属性和方法Object是所有类的超类注意:在Java语言中,只允许单继承。继承承的的优优点点继承的优点代码的可重用性父类的属性和方法可用于子类设计应用程序变得更加简单可以轻松地自定义子类构造造方方法法的的继继承承构造造方方法法不不能能继继承承,,但但子子类类在在创创建建对对象象时时要要对对继继承承来来自自父父类类的的成成员员进进行行初初始始化化,,因因此此,,在在创创建建子子类类时时除除了了执执行行子子类类的的构构造造方方法法外外,,还还需需要要调调用用父父类类的的构构造造方方法法,,具具体体遵遵循循原原则则如如下下:当子子类类未未定定义义构构造造方方法法时时,,创创建建对对象象时时将将无无条条件件地地调调用用父父类类的的无无参参构构造造方方法法;;对于于父父类类的的含含参参数数构构造造方方法法,,子子类类可可以以在在自自己己构构造造方方法法中中使使用用super调调用用它它,,但但super调调用用语语句句必必须须是是子子类类构构造造方方法法中中的的第第一一个个可可执执行行语语句句;;子类类在在自自己己的的构构造造方方法法中中如如果果没没有有用用super明明确确调调用用父父类类的的构构造造方方法法,,则则在在创创建建对对象象时时,,将将自自动动先先执执行行父父类类的的无无参参构构造造方方法法,,然然后后再再执执行行自自己己定定义义的的构构造造方方法法。。任务务四四对上上例例中中Student类类继继承承了了父父类类的的所所有有非非私私有有方方法法进进行行重重写写多态态性性方法法重重写写实实现现的的动态态多多态态性性(运运行行时时多多态态))方法法重重载载实实现现的静静态态多多态态性性(编编译译时时多多态态))多态态性性方法法重重写写方法重写子类和父类的方法具有相同的名称和类型用子类对象调用子类中的重写方法super.methodname()用于调用父类中的方法classRectangle{intlength;intwidth;Rectangle(intlen,intwid){length=len;width=wid;}/*计计算算矩矩形形的的周周长长.*/voidgetPerimeter(){System.out.println(““矩矩形形的的周周长长为为"+(2*(length+width)));}}方法法重重写写classSquareextendsRectangle{Square(intlen){length=len;}/*计计算算周周长长.*/voidgetPerimeter(){System.out.println(““正正方方形形的的周周长长为为"+(4*length));}}publicstaticvoidmain(String[]arg){RectanglerectObj=newRectangle(10,15);rectObj.getPerimeter();RectanglesqObj=newSquare(15);sqObj.getPerimeter();}调用父类方法法调用子类方法法任务四实现classPerson{publicStringname;publicintage;publicvoidgetInfo(){System.out.println(name);System.out.println(age);}publicvoideat(){System.out.println("It'sdelicious!");}}classStudentextendsPerson{Stringschool;publicvoidstudy(){System.out.println("Studding");}publicvoidgetInfo(){System.out.println(name);System.out.println(age);System.out.println(school);}publicstaticvoidmain(String[]args){Personp=newPerson();="Tom";p.age=30;p.getInfo();Students=newStudent();="John";s.age=16;s.school="塔塔山小学";s.getInfo();s.study();}}多态性【实战】:通过分析,,编程实现上上图成员方法覆盖盖应注意的问问题覆盖方法的方方法名、返回回类型和参数数列表必须与与它所覆盖的的方法相同覆盖方法不能能比它所覆盖盖的方法访问问性更低覆盖方法不能能比它所覆盖盖的方法抛出出更多的异常常成员变量的覆覆盖若子类声明了了与父类同名名的变量,则则父类的变量量被隐藏起来来,直接使用用的是子类的的变量,但父父类的变量仍仍占据空间,,可通过super或父父类名来访问问。程序运行结果果:Subclass:200Superclass:100成员变量的覆覆盖classA{intx=100;}classBextendsA{intx=200;voidprint(){System.out.println("Subclass:"+x);System.out.println("Superclass:"+super.x);}publicstaticvoidmain(Stringargs[]){(newB()).print();}}成员变量的覆覆盖类对象之间的的类型转换父类对象和子子类对象的转转换需要注意意以下原则::子类对象可以以被视为是其其父类的一个个对象,反之之则不可。若一个方法的的形式参数定定义的是父类类的对象,则则调用该方法法的实际参数数可以使用子子类对象。若父类对象引引用指向的实实际是一个子子类对象,则则这个父类对对象的引用可可以用强制类类型转换转化化成子类对象象的引用。类变量—static修饰符我们在Person类中中增加一个成成员变量国籍籍,并假设所有的的人都来自中中国,该如何何实现?思考?类变量country=Chinaname=“John”age=15……name=“rose”age=14……name=“Tom”age=16……static静态变量或类类变量静态变量的访访问:类名.变量名名类变量的应用用classCount{publicstaticvoidmain(Stringargs[]){Useru1=newUser();u1.login();Useru2=newUser();u2.login();}}classUser{staticintcount=0;voidlogin(){count++;System.out.println("你你是第"+count+"位访问者者");}}类方法—static修饰符static修饰符修饰饰的方法叫静静态方法目的:使方法法独立于类的的实例,使用用类去访问类方法

规则可以调用其他静态方法必须访问静态数据不能使用

super

或this关键字调用静态方法法的语法为::classname.methodname();类方法的应用用publicclassIsPrime{publicstaticbooleanprime(intx){for(intk=2;k<=Math.sqrt(x);k++){if(x%k==0)returnfalse;}returntrue;}ClassTestIsPrimepublicstaticvoidmain(Stringargs[]){for(intm=10;m<=100;m++){if(IsPrime.prime(m))System.out.println(m+“是是素数。");}}}类方法法的应应用为什么么main()方法法要用用static来修修饰??思考??final修修饰符符

final类不能被继承子类不能重写方法变量只能被赋值一次任务五五思考::怎样样用一一个方方法实实现两两种体体积的的计算算编程实实现计计算圆圆柱体体和长长方体体的体体积抽象类类由abstract修修饰的的方法法叫抽抽象方方法,,抽象象方法法没有有方法法体;;包含含抽象象方法法的类类叫抽抽象类类,由由abstract修饰饰。抽象方方法必必须声声明在在抽象象类中中。抽象方方法语语法::abstracttypemethod_name(parameter_list);声明抽抽象类类语法法:abstractclass{………}使用::父类类中的的某些些抽象象不包包含任任何逻逻辑,,并需需要在在子类类中重重写,,子类类提供供这种种抽象象方法法的实实现细细节任务五五实现现abstractclassShape{...........doublelength;doublewidth;doubleheight;doubleradius;...........abstractdoublevol();}classCircleextendsShape{*计计算圆圆柱体体的体体积............doublevol(){returnMath.PI*radius*radius*height;}}classRectangleextendsShape{*计计算长长方体体的体体积............doublevol(){returnlength*width*height;}}抽象类类

abstract抽象类不能被实例化构造方法、static和private方法不能是抽象的父类的抽象方法往往在子类中实现

抽象类类可以以具有有指向向子类类对象象的对对象引引用任务六六通过接接口计计算边边长分分别为为3和和4的的长方方形面面积接口

接口是一种抽象类,只包含抽象方法及常量接口可以实现多态,支持多重继承变量默认是public、static、final的,方法默认为public、abstract的接口的的定义义publicinterfaceMyinterface{intcompute(intx,inty);}使用interface关键键字定义义一个接口口:接口的实实现publiccalssMyclassimplementsMyinterface{publicintcompute(intx,inty) {returnx+y;}}publiccalssYourclassimplementsMyinterface{publicintcompute(intx,inty) {returnx*y;}}注意:若实现现接口的的类不是是抽象类类,则在在该类的的定义部部分必须须实现指指定接口口的所有有抽象方方法。接口的继继承接口可以以通过关关键字extends继承其他他接口例如:InterfaceB{………}InterfaceAextendsB{………}interfaceA{Stringa="在在接口A中";voidshowA();}interfaceBextendsA{Stringb="在在接口B中";voidshowB();}classInterfaceABCimplementsC{publicvoidshowA(){System.out.println(a);}publicvoidshowB(){System.out.println(b);}}接口的继继承举例例程序运行行结果::在接口A中在接口B中publicclassUseInterface1{publicstaticvoidmain(Stringargs[]){intx=5,y=10;Myinterfaceo;Myclassmy=newMyclass();o=my;System.out.println("xy的和=“+pute(x,y));Yourclassyou=newYourClass();o=you;System.out.println(“xy的积="+pute(x,y));}}接口类型型的使用用接口可以以作为一一种引用用类型来来使用接口的优优点接口的使使用使得得方法的的描述说说明和方方法功能能的分开开,有助助于降低低程序的的复杂性性,使程程序设计计灵活,,便于扩扩充修改改。这也也是Java面面向对象象程序设设计方法法中多态态特性的的体现。。任务六实实现interfaceIrect{doublew=3,l=4;voidcompute();}定义接口口classCrectimplementsIrect{publicvoidcompute(){System.out.println("边长长分别为为3和4的长方方形面积积为:"+w*l);}}定义实现现接口的的类classInterfaceDemo{publicstaticvoidmain(Stringargs[]){Crectr=newCrect();pute();}}定义主类类创建接口口对象综合实战战(1)根根据要求求实现Circle类类:①成员变变量:radius——半径②成员方方法:Circle()—构构造方法法,将半半径置0Circle(doubler)—构构造方法法,将半半径初始始化为rdoublegetRadius()——获取圆圆的半径径doublegetPerimeter()——获取圆圆的周长长doublegetArea()—获取取圆的面面积voiddisp()—将将圆的半半径、周周长和面面积输出出到屏幕幕(2)通通过继承承Circle类,派派生圆柱柱体类Cylinder:①成员变变量:height——高②成员方方法:Cylinder(doubler,doubleh)——构造造方法,,初始化化半径和和高doublegetHeight()——获取圆圆柱体的的高doublegetVol()——获取圆圆柱体体体积voiddispVol()—将将圆柱体体积输输出到屏屏幕包包将类和和接口有有机地组组织成层层次结构构,与具具体的文文件系统统的目录录树结构构层次一一致。包允许将将类组合合成较小小的单元元,使其其易于找找到和使使用相应应的类文文件。有助于避避免命名名冲突。。包允许在在更广的的范围内内保护类类、数据据和方法法。创建包package[包名1[.包名2[.[...]]]]语法格式式如下::注意:在Java程程序中,,package语句句必须是是程序的的第一条条非空格格、非注注释语句句。创建包举举例packagemypackage;publicclassPerson{publicStringname;publicintage;publicvoidgetInfo(){System.out.println(name);System.out.println(age);}publicvoideat(){System.out.println("It'sdelicious!");}}声明包导入包1、使用用import语句import包名.标标识符;;import包名.*;2、直接接使用包包java.applet.Appletap=newjava.applet.Applet();导入包举举例packageyourpackage;importmypackage.Person;classStudentextendsPerson{Stringschool;publicvoidstudy(){System.out.println("Studding");}publicstaticvoidmain(String[]args){Students=newStudent();="John";s.age=16;s.school="清华大大学";s.getInfo();s.study();}}导入包访问修饰饰符访问修饰饰符访问修饰符privateprotectedpublic默认访问修饰饰符该类或非该类均可访问public只有该类可以访问private相同数据包中的类可以访问默认该类及其子类的成员可以访问,同一个包中的类也可访问protected访问修饰饰符位置private默认protectedpublic同一个类是是是是同一个包内的类否是是是不同包内的子类否否是是不同包并且不是子类否否否是访问修饰饰符的使使用【实战】】通过对对任务六六的Person类和和Student类设设置包和和访问修修饰符,,掌握访访问修饰饰符的使使用包装类Java语言中中专门提提供了包包装类,,将基本本类型包包装成类类。与基基本类型型对应的的包装类类有Byte、、Short、Integer、Long、Character、、Float、Double、、Boolean和和Void,,可以以完成一一些数据据的转换换。通过通过查看JDK帮助文档自主学习任务七从一个代代表带有有路径的的文件名名中分离离出文件件名和路路径类String字字符符串串定定义义可以以用用字字符符串串常常量量直直接接初初始始化化一一个个String对象象Strings="HelloWorld";通过过构构造造方方法法构造方法说明String()它将创建一个空字符串 String(Stringvalue)它将新建一个字符串作为指定字符串的副本String(char[]value)它将根据字符数组构造一个新字符串String(byte[]value)它将通过转换指定的字节数组新建一个字符串String构构造造方方法法的的使使用用举举例例Strings,s1,s2,s3,s4,s5,s6,s7;bytebyteArray[]={(byte)'J',(byte)'a',(byte)'v',(byte)'a'};CharcharArray[]={'程程','序序','设设','计计'};StringBuffersb=newStringBuffer("欢欢迎迎");;s=newString("Hello!");s1=newString();s2=newString(s);s3=newString(sb);s4=newString(charArray,2,2);s5=newString(byteArray,0);s6=newString(charArray);s7=newString(byteArray,0,0,1);字符串串长度由length()方法确确定语法publicintlength();返回字字符串串中的的字符符数String的的常用用方法法—字字符串串长度度Stringname="JohnSmith";System.out.println(name.length());String的的常用用方法法—字字符串串比较较字符串串1字符串串2字符串串1字符串串2由equals()方方法法确定定检查组组成字字符串串内容容的字字符同一个个对象象用==运运算算符检检查检查字字符串串是否否指向向同一一个或或不同同的对对象publicclassStringCompare{publicstaticvoidmain(String[]args){Strings1="abc";Strings2="abc";Stringt1=newString("abc");Stringt2=newString("abc");System.out.println(s1==s2);System.out.println(s1.equals(s2));System.out.println(t1==t2);System.out.println(t1.equals(t2));}}字符串串比较较举例例程序运运行结结果如如下::truetruefalsetrue思考::为什什么??Java在在编译时对对字符串常常量的存储储有一个优优化处理策策略,相同同字符串常常量只存储储一份字符串比较较方法方法说明booleanequalsIgnoreCase(Stringvalue)此方法比较两个字符串,忽略大小写形式intcompareTo(Stringvalue)按字母顺序比较两个字符串。如果两个字符串相等,则返回0;如果字符串在该值之前,则返回值小于0;如果字符串在该值之后,则返回值大于0booleanstartsWith(Stringvalue)检查一个字符串是否以另一个字符串开始。booleanendsWith(Stringvalue)检查一个字符串是否以另一个字符串结束。搜索字符串串字符串1情形1:indexOf(character)方法找到第一个匹配索引

0123情形2:如果没有找到匹配,则返回-1返回找到的第一个匹配的位置索引搜索字符串串举例publicclassSearchString{publicstaticvoidmain(String[]args){Stringname="JohnSmith@123.com";System.out.println(“EmailID是是:"+name);System.out.println(“@的索引引是:"+name.indexOf('@'));System.out.println(“.的索引引是:"+name.indexOf('.'));if(name.indexOf('.')>name.indexOf('@')){System.out.println(“该该电子邮件件地址有效效");}else{System.out.println(“该该电子邮件件地址无效效");}}}提取字符串串方法方法说明publiccharcharAt(intindex)此方法用于从指定位置提取单个字符,该位置由索引指定,索引中的值必须为非负publicStringsubstring(intindex)此方法用于提取从位置索引开始的字符串部分publicStringsubstring(intbeginindex,intendindex)此方法用于提取beginindex和endindex位置之间的字符串部分publicStringconcat(Stringstr)此方法用于连接两个字符串,并新建一个包含调用字符串的字符串对象publicStringreplace(charold,charnew)此方法用于将调用字符串中出现某个字符的所有位置都替换为另一个字符publicStringtrim()此方法用于返回一个前后不含任何空格的调用字符串的副本提取字符串串方法说明publiccharcharAt(intindex)此方法用于从指定位置提取单个字符,该位置由索引指定,索引中的值必须为非负。publicStringsubstring(intindex)此方法用于提取从位置索引开始的字符串部分。publicStringsubstring(intbeginindex,intendindex)此方法用于提取beginindex和endindex位置之间的字符串部分。publicStringconcat(Stringstr)此方法用于连接两个字符串,并新建一个包含调用字符串的String对象。publicStringreplace(charold,charnew)此方法用于将调用字符串中出现某个字符的所有位置都替换为另一个字符。publicStringtrim()此方法用于返回一个前后不含任何空格的调用字符串的副本。...charch;ch="orange".charAt(3);...它将从index(3)中中提取单单个字符串串“n”并将将其存储在在变量ch中提取字符串串举例publicclassStringMethods{publicstaticvoidmain(String[]args){Strings="Javaisa"+"platformindependentlanguage";Strings1="Helloworld";Strings2="Hello";System.out.println(s);System.out.println("indexoft="+s.indexOf('t'));System.out.println("lastindexoft="+s.lastIndexOf('t'));System.out.println("indexof(t,10)="+s.indexOf('t',10));System.out.println(s1.substring(3,8));System.out.println(s2.concat("World"));System.out.println(s2.replace('l','w'));System.out.println(s1.trim());}}任务七实现现publicclassGetFilename{privateStringfullPath;privatefinalcharpathSepatator='\\';publicGetFilename(Stringfname){fullPath=fname;}publicStringgetName(){intpos=fullPath.lastIndexOf(pathSepatator);if(pos==-1){returnfullPath;}else{returnfullPath.substring(pos+1);}}publicStringgetPath(){intpos=fullPath.lastIndexOf(pathSepatator);if(pos==-1){returnfullPath;}else{returnfullPath.substring(0,pos);}}publicstaticvoidmain(String[]args){GetFilenamefn=newGetFilename("F:\\ava\\myexample\\a.java");System.out.println(fn.getName());System.out.println(fn.getPath());}}更改字符大大小写方法法Hello使用toUpperCase()方法HELLOHELLO使用toLowerCase()方法hello语法publicStringtoUpperCase();语法PublicStringtoLowerCase();更改字符大大小写方法法举例publicclassStringTest{publicstaticvoidmain(String[]args){Stringname=newString("George");System.out.println(“姓姓名是"+name);intlength=name.length();System.out.println(“姓姓名的长度度为”+length+““个字符符");System.out.println(“姓姓名用大写写形式表示示为:");StringnameUppercase=name.toUpperCase();System.out.println(nameUppercase);}}任务八判断一个字字符串是否否为回文,,即将一个个字符串进进行反转,,得到的字字符串与源源串相同::例如原始始字符串为为“aba”,逆逆转后的字字符串也为为“aba”。StringBuffer类类构造方法说明publicStringBuffer()保留16个字符的空间publicStringBuffer(intlength)设置缓存器大小publicStringBuffer(Stringvalue)接收字符串参数,用来设置初始内容,并在不重新分配的情况下保留16个字符的空间StringBuffer用用于表示示可以修改改的字符串串使用连接运运算符(+)的的字符串会会自动创建建字符串缓缓冲对象StringBuffer类类的方法法方法说明StringBufferinsert(Strings)在指定位置插入指定的字符串intlength()确定StringBuffer对象的长度intcapacity()返回当前容量voidsetCharAt(intpos,charch)使用ch指定的新值设置pos指定的位置上的字符StringtoString()转换为字符串形式StringBufferreverse()将此字符序列用其反转形式取代

StringBufferdelete(intstart,intend)删除调用对象中从start位置开始直到end指定的索引–1位置的字符序列StringBufferdeleteCharAt(intpos)删除pos指定的索引处的字符StringBufferreplace(intstart,intend,Strings)使用一组字符替换另一组字符。将用替换字符串从start指定的位置开始替换,直到end指定的位置结束不变性String类创建后直接修改不变性的概概念解决方法StringBuffer类String的对对等类表示可增加加和可编写字字符符的的可可变变序序列列将字字符符插插入入到到字字符符串串中中间间或附附加加到到字字符符串串末末尾尾不变变性性举举例例publicclassStringBuf{publicstaticvoidmain(String[]args){StringBufferbuf=newStringBuffer("Java");buf.append(““GuideVer1/””);buf.append(3);intindex=5;buf.insert(index,"Student");index=23;buf.setCharAt(index,'.');intstart=24;intend=25;buf.replace(start,end,"4");Strings=buf.toString();//转转换换为为字字符符串串System.out.println(s);}}任务务八八实实现现publicclassStringReverse{publicstaticvoidmain(String[]args){Strings="IamaChinese";intlen=s.length();StringBufferdest=newStringBuffer(len);for(inti=len-1;i>=0;i--){dest.append(s.charAt(i));}System.out.println(dest.toString());}}main方方法法的的参参数数main方方法法的的形形参参为为String类类的的数数组组参参数数args,,args可可以以用用来来接接收收Java命命令令行行传传送送给给Java应应用用程程序序的的数数据据。。例例如如::javaHelloEchoHowareyou?123若要要将将包包含含多多个个空空格格的的单单词词作作为为一一个个字字符符串串,,可可用用引引号号括括起起来来。。例例如如::javaHelloEcho"Howareyou?"123main方方法法的的参参数数举举例例classCommandLine{publicstaticvoidmain(Stringargs[]){for(inti=0;i<args.length;i++)System.out.println("args["+i+"]:"+args[i]);}}显示示所所有有命命令令行行参参数数Java异异常常处处理理任务务九九publicclassExceptionRaised{publicExceptionRaised(){}publicintcalculate(intoperand1,intoperand2){intresult=operand1/operand2;returnresult;}publicstaticvoidmain(String[]args){ExceptionRaisedobj=newExceptionRaised();intresult=obj.calculate(9,0);System.out.println(result);}}OS!异常常情情况况异常常程序序突突然然终终止止并并将将控控制制交交给给操操作作系系统统在运运行行时时发发生生的的错错误误什么么是是异异常常在程程序序运运行行过过程程中中发发生生的的、、会会打打断断程程序序正正常常执执行行的的事事件件称称为为异异常常((Exception)),,也也称称为为例例外外。。例如如,,零零用用作作除除数数((产产生生算算术术异异常常ArithmeticException))、、在指指定定的的磁磁盘盘上上没没有有要要打打开开的的文文件件((产产生生文文件件未未找找到到异异常常FileNotFoundException))数组组下下标标越越界界((产产生生数数组组下下标标越越界界异异常常ArrayIndexOutOfBoundsException))等等常见见异常常异常常类类的的层层次次为内内部部错错误误,,因因此此在在正正常常情情况况下下不不期期望望用用户户的的程程序序捕捕获获它它们们Java虚虚拟拟机机在在运运行行时时生生成成的的例例外,,由由系系统统检检测测,用用户户可可不不做做处处理,,系系统统将将它它们们交交给给缺缺省省的的异异常常处理理程程序序程序序中中可可预预知知的的问问题题,,可可能能会会带带来来意意想想不不到到的的结结果果,,Java程程序序必必须须捕捕获获或或声声明明所所有有的的非非运运行行时时异异常常异常常处处理理机机制制捕获获异异常常声明明抛抛出出异异常常throwsTry-catch消极极的的处处理理方方式式积极极的的处处理理方方式式捕获获异异常常捕获获异异常常是是通通过过try-catch-finally语语句句实实现现的的。。tryfinallycatch要监控的程序语句包含在此块中以合理的方式捕获和处理异常释放资源等try和和catch块块执行catch后程序继续正常运行程序控制引发代码块trycatch异常常单元元任务务九九的的解解决决方方案案一一publicclassExceptionRaised{publicExceptionRaised(){}publicintcalculate(intoperand1,intoperand2){intresult=0;try{result=operand1/operand2;}catch(Exceptione){System.err.println("发发生生异异常常::"+e.toString());e.printStackTrace();}returnresult;}}指明明catch可可以以捕捕获获并并处处理理的的异异常常类类型型调用用异异常常类类的的方方法法异常常类类的的常常用用方方法法实战战阅读读下下列列程程序序代代码码,,分分析析程程序序可可能能产产生生的的异异常常情情况况,,捕捕获获并并处处理理异异常常。。publicclassExceptionDemo{intarray[]={1,2,3,4,5,6,7,8,9,0};publicvoidexceptest(intj){for(inti=0;i<j;i++){System.out.println("array["+i+"]="+array[i]);}}publicstaticvoidmain(Stringargs[]){ExceptionDemoex=newExceptionDemo();ex.exceptest(11);}}多重重catch块块2-1一段段代代码码可可能能会会生生成成多多个个异异常常当引引发发异异常常时时,,按按顺顺序序查查看看每每个个catch语语句句,,并并执执行行第第一一个个类类型型与与异异常常类类型型匹匹配配的的语语句句执行行其其中中的的一一条条catch语语句句之之后后,,其其他他的的catch语语句句将将被被忽忽略略try{……….}catch(ArrayIndexOutOfBoundsExceptione){………}catch(Exceptione){………}多重重catch块块2-2try{…...}catch(Exceptione){………}catch(ArrayIndexOutOfBoundsExceptione){………}×使用用多多重重catch语语句句时时,,异异常常子子类类一一定定要要位位于于异异常常父父类类之之前前。。多重重catch块块示示例例classExceptionCode{publicvoidcalculate(){try{intnum=0;intnum1=42/num;intc[]={1,,2,,3,,4};c[4]=99;}catch(Exceptione){System.out.println("父父类类异异常常catch子子句句");}catch(ArithmeticExceptionae){//错错误误–不不能能到到达达的的代代码码System.out.println("这这个个子子类类的的父父类类是是exception类类,且且不不能能到到达达");}}}classUnreachableCode{publicstaticvoidmain(String[]args){ExceptionCodeobj=newExceptionCode();obj.calculate();}}finally块块try、、catch和和finally块块的的执执行行流流程程finally子子句句可可以以保保证证,,无无论论try块块中中是是否否抛抛出出异异常常,,finally块块中中的的语语句句都都会会被被执执行行到到,,这这样样可可以以对对程程序序的的状状态态作作统统一一的的管管理理。。finally语语句句对对增增强强程程序序的的鲁鲁棒棒性性非非常常重重要要。。try块块finally块块catch块块无异异常常异常常异常常处处理理块块的的一一般般形形式式try{//要要监监控控错错误误的的代代码码块块}catch(Exceptione){//Exceptione的异异常常处处理理程程序序}finally{//在在try结结束束前前要要执执行行的的代代码码块块}finally块块示示例例publicclassSystemException{publicstaticvoidmain(Stringargs[]){inta=68;intb=0;try{System.out.println(a/b);//0用用作作了了除除数数}catch(ArithmeticExceptione){System.out.println(““0用用作作了了除除数数””);return;}finally{System.out.println(““程程序序

温馨提示

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

评论

0/150

提交评论