版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
情境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(“程程序结束”);}}}思考:如果没没有finally语句句,程序运行行的结果有何何不同?try-catch-finally应注意的的问题每个try语语句至少有一一个catch语句对应应,catch语句的排排列顺序应该该从特殊到一一般。可以用一个catch语语句处理多个个异常类型,,这时它的异异常类型参数数应该是多个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市夜景照明提升施工方案
- 职业院校班主任职业素养提升方案
- 2024-2030年中国自行车轴承行业市场发展趋势与前景展望战略分析报告
- 2024-2030年中国膜结构行业供需状况及投融资策略分析报告
- 2024-2030年中国纳米二氧化硅行业发展可行性及投资规划分析报告版
- 2024-2030年中国社区卫生信息化行业应用模式研究及投资前景展望报告版
- 2024-2030年中国硅锰合金行业产能预测及投资规模分析报告
- 物流公司库存优化制度
- 2024年广州白云国际机场扩建工程咨询合同
- 2024年建筑项目资料包工合同
- 全套教学课件《管理学基础》
- 红色文化资源融入初中生思想品德教育的探索优秀获奖科研论文
- 深度解读强基计划-被强基计划课件
- 第五章肺孢子菌病课件
- 魏晋南北朝服饰课件
- 无机及分析化学考试题(附答案)
- 可可脂巧克力课件
- 交通连四方 杭州交通的发展课件
- 梨树栽培技术 课件
- 第13讲 教学设计的ASSURE模式(V5.1)公开课一等奖省优质课大赛获奖课件
- 三年级上册美术课件-3.色彩的变化|赣美版 (共19张PPT)
评论
0/150
提交评论