版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四讲:Java面向对象的编程(续)本讲主要内容类的继承对象类型的转换运行中的多态性抽象类和抽象方法super关键字Java接口类的进一步讨论1回顾面向对象的编程对象(实体/实例):
具有:状态,行为对象间的联系:通过发送消息类与对象的关系:描述与实体三大特性:封装性、继承性、多态性类与对象类(对象原型):对象封装了变量(属性)和方法(操作)变量:成员变量(实例变量和类变量)、局部变量方法:成员方法(实例方法和类方法)、方法重载构造方法:特殊方法,创建实例用对象的生命期:新建、使用和消除this关键字成员和类的安全访问权限2类的UML表示一个类的UML图表示3publicclassBox{intlong,width,height;voidsetLong(intlongValue){long=longValue;}voidsetWidth(intwidthValue){width=widthValue;}voidsetHeight(intheightValue){height=heightValue;}voidsetBox(intlongValue,intwidthValue,intheightValue){long=longValue;width=widthValue;height=heightValue;}intgetLong(){returnlong;}intgetWidth(){returnwidth;}intgetHeight(){returnheight;}}
一个Box类的UML表示4定义一个带访问限定的类(UML例示)classPoint{privateintx,y;publicvoidsetPoint(){…}publicintgetX(){…}publicintgetY(){…}publicStringtoString(){…}}5类的继承继承是指一个类的定义可以基于另外一个已经存在的类(即子类基于父类),从而实现父类代码的重用。两个类之间的这种继承关系可以用UML图形符号表示:6类的继承(续)继承可以先建一个共有属性的一般类,再根据一般类建有特殊属性的新类新类继承一般类的状态和行为,并可以增加自己新状态和行为。由继承得到的新类称为子类,被继承的已有类称为父类(超类)Java不支持多重继承(子类只能有一个父类)注意:Java不支持多重继承!!7继承的作用可重用已有代码(继承性)可更改部分原有功能隐藏父类中的部分成员变量重写父类中的部分成员方法(覆盖)可增加新属性和功能增加自己的成员变量和成员方法优点:可避免类共性的重复说明,提高软件的重用性、可用性和界面的一致性。节省开发时间。8多层次继承9创建子类在类声明中加入extends子句格式:
class子类名
extends超类名
{
类体 }
例如:classStudentsextendsPeople{...}
注意:Java中一个类只准有一个直接超类(单继承)如果没有extends说明,则超类是java.lang.Object10子类举例(同包中的继承)例子15importjava.applet.*;importjava.awt.*;classFather{privateintmoney;floatweight,height;Stringhead;Stringspeak(Strings) {returns; }}classSonextendsFather{Stringhand,foot;}classFather{privateintmoney;floatweight,height;Stringhead;Stringspeak(Strings){returns;}}classSonextendsFather{Stringhand,foot;}父类变量:money、weight、height、head子类可用变量:weight、height、headhand,foot11子类举例(同包中的继承)(续)publicclassExample4_17extendsApplet{Sonboy;publicvoidinit() {boy=newSon();boy.weight=1.80f;boy.height=120f;boy.head="一只头";boy.hand="两只手";boy.foot="两只脚"; }
publicvoidpaint(Graphicsg) {g.drawString(boy.speak("我是儿子"),5,20);
g.drawString(boy.hand+boy.foot+boy.head+boy.weight+boy.height,5,40);
}}//运行结果:我是儿子两只手两只脚一只头1.8120.0publicclassExample4_15{publicstaticvoidmain(Stringargs[]){Sonboy;boy=newSon();boy.weight=1.80f;boy.height=120f;boy.head="一个头";
boy.hand="两只手";
boy.foot="两只脚";
boy.speak("我是儿子");System.out.println(boy.hand+boy.foot+boy.head+boy.weight+boy.height);}}//运行结果:
我是儿子两只手两只脚一只头1.8120.012子类和父类(非同包中的继承性)如果子类和父类不在同一包中只继承public或protected修饰的成员不能继承友好成员packagetom.jiafei;publicclassFather{intheight;
protectedintmoney;
publicintweight;
protectedintgetMoney(){returnmoney;}……}package;importtom.jiafei.*;classJerryextendsFather
{publicstaticvoidmain(String[]args){Jerryj=newJerry();
j.height=12;
//非法j.weight=200;j.money=200;intm=j.getMoney();…….}例子4.15b13变量隐藏与方法重写(覆盖)隐藏当子类中定义的成员变量和父类中的成员变量同名时,则父类中的成员变量被隐藏。当子类中定义的一个方法,并且这个方法的名字、返回类型、及参数个数和类型跟父类的某个方法完全相同时,则父类的这个方法将被覆盖,也称子类重写父类的方法。***子类通过对成员变量的隐藏和对方法的重写可以把父类的状态和行为改变为自身的状态和行为。
14子类举例二例子16importjava.applet.*;importjava.awt.*;classChengji{ floatf(floatx,floaty) {returnx*y; }}classXiangjiaextendsChengji{floatf(floatx,floaty) {returnx+y; }}classChengji{floatf(floatx,floaty){returnx*y;}}classXiangjiaextendsChengji
{floatf(floatx,floaty){returnx+y;}}子类覆盖父类的f方法将乘运算改为加运算publicclassExample4_16{publicstaticvoidmain(Stringargs[]){Xiangjiasum;sum=newXiangjia();floatc=sum.f(4,6);System.out.println(c);}}运行结果:sum=10.0例子4.1615子类举例例子4.17importjava.applet.*;importjava.awt.*;classArea{ floatf(floatr) {return3.14159f*r*r;} floatg(floatx,floaty) {returnx+y;}}classCircleextendsArea{floatf(floatr) {return3.14159f*2.0f*r;}}classArea{protectedfloatf(floatr){return3.14159f*r*r;}floatg(floatx,floaty){returnx+y;}}classCircleextendsArea{public
floatf(floatr)
{return3.14159f*2.0f*r;}}注意:
子类重写父类方法时,不可以降低方法的访问权限public>protected>友好>private16子类举例(续)publicclassExample4_8extendsApplet{Circleyuan;publicvoidinit() {yuan=newCircle(); }publicvoidpaint(Graphicsg) {g.drawString("yuan="+yuan.f(5.0f),5,20); g.drawString(""+yuan.g(2.0f,8.0f),5,40); }}//运行结果:yuan=31.41590110.0publicclassExample4_17{publicstaticvoidmain(Stringargs[]){Circleyuan;yuan=newCircle();floatlength=yuan.f(5.0f);floatsum=yuan.g(232.645f,418.567f);System.out.println(length);System.out.println(sum);}}//运行结果:31.415901651.212调用父类的方法g调用子类的方法f17多层次继承举例类层次结构
VehicleCarAircraftWhirlybirdJet
Vehicle
Car
Aircraft
Whirlybird
JetUML表示18多层次继承举例(续)创建一个交通工具的类(Vehicle)和一个小汽车的子类(Car)classVehicle{publicvoidstart() {System.out.println("Starting..."); }}classCarextendsVehicle{publicvoiddrive() {System.out.println("Driving..."); }}classVehicle//创建一个交通工具的类{publicvoidstart() {System.out.println("Starting..."); }}classCarextendsVehicle//一个小汽车的子类{publicvoiddrive() {System.out.println("Driving..."); }}classAircraftextendsVehicle//一个飞行器的子类{publicvoidfly() {System.out.println("Flying..."); }}19多层继承举例(续)从飞行器(Aircraft)中再派生两个子类,螺旋直升机(Whirlybird)和喷气机(Jet)
classWhirlybirdextendsAircraft{publicvoidwhirl() {System.out.println("Whirling..."); }}classJetextendsAircraft{publicvoidzoom() {System.out.println("Zooming..."); }}classWhirlybirdextendsAircraft{publicvoidwhirl() {System.out.println("Whirling..."); }}classJetextendsAircraft{publicvoidzoom() {System.out.println("Zooming..."); }}20多层继承举例(续2)实例化这些类classApp{ publicstaticvoidmain(String[]args) { System.out.println("Creatingacar..."); Carc=newCar(); c.start();c.drive(); System.out.println(); System.out.println("Creatingajet..."); Jetj=newJet(); j.start(); j.fly(); j.zoom(); }}运行结果
Creatingacar...Starting...Driving...Creatingajet...Starting...Flying...Zooming...21子类对象的初始化顺序classA{A() {System.out.println("ConstructingA"); }}classBextendsA{B() {System.out.println("ConstructingB"); }}classCextendsB{C() {System.out.println("ConstructingC"); }}classDextendsC{D() {System.out.println("ConstructingD"); }}22子类对象的初始化顺序(续)classTestapp{ publicstaticvoidmain(String[]args) { Dobj=newD(); System.out.println("MainProgram!"); }}运行结果
ConstructingAConstructingBConstructingCConstructingDMainProgram!注意:构造方法的调用顺序:23final关键字final类:不能被继承的类(即不能有子类)格式:
finalclass最终类名{ ... }final方法:不能被覆盖的方法(不可改变的方法)格式:
final返回类型
最终方法名([参数表]) { ... }
24final举例classA{finaldoublePI=3.1415926;}classDemo{publicstaticvoidmain(StringStr[]){Aa=newA();a.PI=2.718;//错误:不能更改final变量}}25final举例-2classAbc{finalvoidmethod(){…//原有的程序代码}classXyzextendAbc{voidmethod(){//错误:不能覆盖final方法…//新的程序代码}}26classA{final
doublePI=3.1415926;publicdoublegetArea(finaldoubler){r=89;returnPI*r*r;}}publicclassExample4_18{publicstaticvoidmain(Stringargs[]){Aa=newA();System.out.println("面积:"+a.getArea(100));}}例子4.18非法27对象的类型转换指对象引用时的(类)类型转换上转型对象(指子类对象赋给超类对象变量)下转型对象(指超类对象赋给子类对象变量)上转型举例(假设:A类是B类的父类)
Aaa=newB();或Aa;Bb=newB();
a=b;注意:对象的类型转换并非对对象的实体进行转化。实体没有变。28对象类型转换规则上转型对象不能操作子类新增的成员(变量/方法)上转型对象可以操作子类继承或重写的成员如果子类重写了父类的方法,则上转型对象调用的是子类重写后的方法注意:上转型对象的实体是子类创建的对象的上转型对象对象子类新增的成员变量子类新增的成员方法继承的成员变量继承或重写的成员方法注意:上转型对象的实体是子类创建的29//对象类型转换例子4.19
class类人猿
{privateintn=100;
voidcrySpeak(Strings)
{System.out.println(s);}
}
classPeopleextends类人猿
{voidcomputer(inta,intb)
{intc=a*b;
System.out.println(c);}
voidcrySpeak(Strings)
{System.out.println("**"+s+"**");}
}
classExample4_19
{publicstaticvoidmain(Stringargs[])
{类人猿monkey=newPeople();
//monkey是People对象的上转型对象
monkey.crySpeak("Ilovethisgame");
Peoplepeople=
(People)
monkey;
puter(10,10);
}
}注意:把上转型对象强制转化为子类的对象monkey.n=1000;可以吗?30运行时多态
运行时多态指父类的某方法被子类重写后,可以各自产生自己的功能行为对于子类创建的一个对象如果子类重写了父类的方法,则运行时系统调用子类的方法(称为覆盖)如果子类继承了父类的方法(未重写),则运行时自然相当于调用了父类的方法Java中也容许子类中对父类方法重载同名不同参数31class动物{voidcry(){}}class狗extends动物{voidcry(){System.out.println("汪汪…");}}class猫extends动物{voidcry(){System.out.println("喵喵…");}}classExample4_20{publicstaticvoidmain(Stringargs[]){动物dongwu;if(Math.random()>=0.5){dongwu=new狗();dongwu.cry();}else{dongwu=new猫();dongwu.cry();}}}多态性4.20
动物
狗
猫32abstract类和abstract方法abstract类:必须被继承(与final的作用相反)格式
abstractclass抽象类名
{ ... }abstract方法:必须被覆盖格式
abstract返回类型
抽象方法名([参数表]);注意:此方法定义中没有方法体33abstract举例4.21abstractclassA{abstractintmin(intx,inty);intmax(intx,inty){returnx>y?x:y;}}classBextendsA{intmin(intx,inty){returnx<y?x:y;}}只关心功能,不关心行为实现。由子类实现具体功能。34abstract举例4.21(续)publicclassExample4_21{publicstaticvoidmain(Stringargs[]){Aa;Bb=newB();intmax=b.max(12,34);intmin=b.min(12,34);System.out.println("max="+max+"min="+min);a=b;max=a.max(12,34);System.out.println("max="+max);}}Aa=newA();可以吗?35abstract举例二abstractclass图形{publicabstractdouble求面积();}class梯形extends图形
{doublea,b,h;
梯形(doublea,doubleb,doubleh){this.a=a;this.b=b;this.h=h;}publicdouble求面积(){return((1/2.0)*(a+b)*h);}}36abstract举例二(续)class圆形extends图形
{doubler;
圆形(doubler){his.r=r;}publicdouble求面积(){return(3.14*r*r);}}37abstract举例二(续2)class堆{图形底;
double高;堆(图形底,double高){this.底=底;this.高=高;}
void换底(图形底){this.底=底;}
publicdouble求体积(){return(底.求面积()*高)/3.0;}}38abstract举例二(续3)publicclassExample4_22{publicstaticvoidmain(Stringargs[]){堆zui;
图形
tuxing;tuxing=new梯形(2.0,7.0,10.7);
System.out.println("梯形的面积"+tuxing.求面积());
zui=new堆(tuxing,30);System.out.println("梯形底的堆的体积"+zui.求体积());
tuxing=new圆形(10);
System.out.println("半径是10的圆的面积"+tuxing.求面积());
zui.换底(tuxing);System.out.println("圆形底的堆的体积"+zui.求体积());}}39Abstract使用要点
①abstract类不能直接用new进行实例化②abstract方法,只有声明部分,没有方法体③如果一个类继承abstract类,它必须实现超类的所有abstract方法④含有abstract方法的类必须是abstract类abstract类可以定义非abstract方法⑤
abstract方法不能用修饰词private或者final注意:构造方法和静态方法也不能作为abstract方法。
40关键字superSuper当前对象的超类引用,实现对超类成员的访问。使用super的三种情况:
调用超类的构造方法调用超类被覆盖的方法访问超类被隐藏的成员变量
41super的使用方法举例一例子23classStudent{intnumber;Stringname;Student(intnumber,Stringname) {this.number=number;=name;System.out.println("Iam"+name+"mynumberis"+number); }}42super的使用方法举例一(续一)classUniver_StudentextendsStudent{boolean婚否;
Univer_Student(intnumber,Stringname,booleanb){
super(number,name);
婚否=b; System.out.println("婚否="+婚否);}}43super的使用方法举例一(续二)publicclassExample4_23{publicstaticvoidmain(Stringargs[]) {Univer_Studentzhang=newUniver_Student(9901,"和晓林",false); }}44super的使用方法举例二classAverageextendsSum{intn;floatf() {floatc;super.n=n; c=super.f(); returnc/n; }floatg() {floatc;c=super.f(); returnc/2; }}例子24classSum{intn;floatf(){floatsum=0;
for(inti=1;i<=n;i++) sum=sum+i;returnsum;}}classAverageextendsSum{intn;floatf() {floatc;super.n=n; c=super.f(); returnc/n; }floatg() {floatc;c=super.f(); returnc/2; }}45super的使用方法举例二(续)publicclassExample4_24{publicstaticvoidmain(Stringargs[]) {Averageaver=newAverage(); aver.n=100; floatresult_1=aver.f(); floatresult_2=aver.g();System.out.println("result_1="+result_1);System.out.println("result_2="+result_2); }}46接口(interface)接口是一种特殊形式的抽象类,它主要用来组织公用的常量,并统一操作行为的格式,通常它被应用在两个主要方面:用接口包装常量。可以将各式各样的常量放在接口中,让每个使用这些常量的类对象实现这个接口,从而达到共享这些常量的目的用接口实现多态性。将成员方法从类中分离出来组成一个接口,随后由每个类实现这个接口47接口(续)Java中还可利用接口,解决类的多重继承问题接口作用统一操作名称(实现不相关类的相同行为)规范界面(设计对象的公共交互性界面)只要了解对象的交互信息,无需了解对象所对应的类。接口只是关心可有什么功能,不关心功能的具体实现,具体功能实现由子类中定义48接口定义接口定义含两部分:接口声明和接口体
[public]interface
接口名[extends超接口表]{
接口体 }接口名通常以able或ible结尾通常接口是作为一个整体声明的特殊方法接口体包含两部分常量定义方法定义:只进行方法的声明,不提供方法的实现(没有方法体),用分号“;”结尾。49接口定义的例子
interfacePrintable{finalintMAX=100;voidadd();floatsum(floatx,floaty);}注意:
接口中所有的变量都默认为是finalstatic属性接口中所有的方法都默认为是abstract属性50接口的使用
一个类通过使用关键字implements声明自己使用一个或多个接口,接口名之间用逗号隔开classAimplementsPrintable,Addable{。。。}
classDogextendsAnimalimplementsEatable,Sleepable{。。。}51接口的使用举例4.25interfaceComputable{intMAX=100;intf(intx);}classJapanimplementsComputable{intnumber;publicintf(intx){return44+x;}}52接口的使用举例(续1)classChinaimplementsComputable{intnumber;publicintf(intx)//不要忘记public关键字{intsum=0;for(inti=1;i<=x;i++){sum=sum+i;}returnsum;}}53接口的使用举例(续2)publicclassExample4_25{publicstaticvoidmain(Stringargs[]){Chinazhang;Japanhenlu;zhang=newChina();henlu=newJapan();zhang.number=991898+Computable.MAX;henlu.number=941448+Computable.MAX;System.out.println("number:"+zhang.number+"求和"+zhang.f(100));System.out.println("number:"+henlu.number+"求和"+henlu.f(100));}}54使用接口要点如果一个类使用了某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体。在类中实现接口的方法时,方法的名字、返回类型、参数个数及类型必须与接口中的完全一致。接口中的方法被默认是public的,所以类在实现接口方法时,一定要用public来修饰。如果接口方法名有返回类型,那么在类中实现该接口方法时,方法体至少要有一个return语句;如果接口方法名是void型,类体除了两个大括号外,可以没有任何语句。接口也可以被继承,子接口将继承父接口中的全部方法和常量。55interfaceComputable{intMAX=100;voidspeak(Strings);intf(intx);}abstractclassAimplementsComputable{publicintf(intx)//不要忘记public关键字{intsum=0;for(inti=1;i<=x;i++){sum=sum+i;}returnsum;}}继承接口56interface收费{publicvoid收取费用();}class公共汽车implements收费{publicvoid收取费用(){System.out.println("公共汽车:一元/张,不计算公里数"); }}class出租车implements收费{publicvoid收取费用(){System.out.println("出租车:l.60元/公里,起价3公里");}}class电影院implements收费{publicvoid收取费用(){System.out.println("电影院:门票,十元/张");}}classExample4_26{publicstaticvoidmain(Stringargs[]){公共汽车七路=new公共汽车();出租车天宇=new出租车();电影院红星=new电影院();七路.收取费用();天宇.收取费用();红星.收取费用();}}理解接口57interfaceShowMessage{void显示商标(Strings);}classTVimplementsShowMessage{publicvoid显示商标(Strings){System.out.println(s);}}classPCimplementsShowMessage{publicvoid显示商标(Strings){System.out.println(s);}}publicclassExample4_27{publicstaticvoidmain(Stringargs[]){ShowMessagesm;//声明接口变量
sm=newTV();//接口变量中存放对象的引用
sm.显示商标("长城牌电视机");//接口回调
sm=newPC();//接口变量中存放对象的引用
sm.显示商标("联想奔月5008PC机");//接口回调}}接口回调58interfaceSpeakHello{voidspeakHello();}classChineseimplementsSpeakHello{publicvoidspeakHello(){System.out.println("中国人习惯问候语:你好,吃饭了吗?");}}classEnglishimplementsSpeakHello{publicvoidspeakHello(){System.out.println("英国人习惯问候语:你好,天气不错");}}接口做参数59classKindHello{publicvoidlookHello(SpeakHellohello){hello.speakHello();}}publicclassExample4_29{publicstaticvoidmain(Stringargs[]){KindHellokindHello=newKindHello();kindHello.lookHello(newChinese());kindHello.lookHello(newEnglish());}}接口做参数60内部类(innerclass)定义在类体内声明另外一个类,该类称为内部类内部类也是类的一种成员成员变量、成员方法、内部(嵌套)类内部类声明与声明成员变量、成员方法地位相同,无先后顺序。内部类的使用外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。内部类中的方法也可以使用外嵌类中的方法。注意:内部类的类体不可以声明类变量和类方法。61classChina{finalStringnationalAnthem="义勇军进行曲";
Beijingbeijing;China(){beijing=newBeijing();}StringgetSong(){returnnationalAnthem;}
classBeijing{Stringname="北京";
voidspeak(){System.out.println("我们是"+name+"我们的国歌是:"+getSong());}}}内部类62内部类的.class文件
china$beijing.classpublicclassExample4_30{publicstaticvoidmain(Stringargs[]){Chinachina=newChina();
china.beijing.speak();}}内部类63匿名类与类有关的匿名类在创建对象时,除了构造方法还有类体说明部分,此类体被认为是该类的一个子类去掉类声明后的类体,称作匿名类。
newPeople(){
匿名类类体定义}与接口有关的匿名类直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了接口的类去掉类声明后的类体,称作匿名类。64例子4.31classCubic{doublegetCubic(intn){return0;}}abstractclassSqrt{publicabstractdoublegetSqrt(intx);}classA{voidf(Cubiccubic){doubleresult=cubic.getCubic(3);System.out.println(result);}}匿名类65publicclassExample4_31{publicstaticvoidmain(Stringargs[]){Aa=newA();a.f(newCubic(){doublegetCubic(intn){returnn*n*n;}});Sqrtss=newSqrt(){publicdoublegetSqrt(intx){returnMath.sqrt(x);}};doublem=ss.getSqrt(5);System.out.println(m);}}匿名类66例子4.32interfaceCubic{doublegetCubic(intn);}interfaceSqrt{publicdoublegetSqrt(intx);}classA{voidf(Cubiccubic){doubleresult=cubic.getCubic(3);System.out.println(result);}}与接口有关的匿名类67publicclassExample4_32{publicstaticvoidmain(Stringargs[]){Aa=newA();a.f(newCubic(){publicdoublegetCubic(intn){returnn*n*n;}});Sqrtss=newSqrt(){publicdoublegetSqrt(intx){returnMath.sqrt(x);}};doublem=ss.getSqrt(5);System.out.println(m);}}与接口有关的匿名类68Java异常处理编程中有三类错误编译错误、运行是错误、逻辑错误什么是异常异常(Exception)是指在程序运行过程中发生的错误事件,这类事件的发生将中断程序的正常执行流程。常见的异常有:
除数为0、数组下标越界、文件不存在、文件不能打开、内存不够,I/O读写错等
69Java
异常处理类及其子类
类Throwable是java.lang包中一个专门用来处理异常的类位于异常类层次的最顶层,只有它的子类才可以作为一个异常被抛出Object
Throwable
Error
Exception
70异常类(Exception)程序运行出现异常时,Java运行环境就用异常类Exception的相应子类创建一个异常对象,并等待处理例如,读取一个不存在的文件时,运行环境就用异常类IOException创建一个对象。异常对象可以调用如下方法得到或输出有关异常的信息:publicStringgetMessage()publicvoidprintStackTrace()publicStringtoString()71异常处理策略1。捕获异常--使用try-catch-finally处理2。声明异常--使用throws子句,投递到其它代码块处理(即本代码块不处理,由调用处去捕获异常)。3。抛出异常
--
使用throw语句72捕获异常使用try-catch-finally语句俘获一个或者多个异常语句格式
try{ Java中可能发生的语句块 }
catch(异常类型1对象){ 异常对象1处理 }
catch(异常类型2对象){ 异常对象2处理 }...
finally{
最终处理 }73捕获异常(续)try子句指出它后面的catch语句所俘获的范围可能会抛出一个或者多个异常,供catch捕获catch子句对try块中生成的异常对象进行捕获,并对该对象进行处理Java运行系统从上到下分别对每个catch语句处理的异常类型进行检测,找出与类型匹配的catch块进行处理finally语句由finally指出的代码必须执行(不管是否出现异常情况)finally语句在try-catch-finally结构中可以缺省finally语句在try-catch-finally结构中可以缺省74捕获异常举例
try{Filef=newFile("E:\\data\\","AA.java");FileInputStreamreadfile=newFileInputStream(f);while((b=readfile.read(tom,0,j))!=-1) {Strings=newString(tom,0,j);System.out.println(s);text.append(s+'\n'); }readfile.close(); }
catch(IOExceptione) {System.out.println("FilereadEroor"); }publicclassExample4_33{publicstaticvoidmain(Stringargs[]){intn=0,m=0,t=555;
try{m=Integer.parseInt("8888")
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2006年江苏无锡中考满分作文《门其实开着》5
- 喷涂技术节能减排考核试卷
- 咖啡馆服务流程标准化与优化考核试卷
- 2006年湖北黄冈中考满分作文《我眼中的同学是青春灿烂的》
- 2006年河北省中考满分作文《脚印 财富》
- 公共建筑装饰设计理念与创意考核试卷
- 第五单元 第1课《广东名山秀水》(说课稿)-2023-2024学年六年级下册综合实践活动广州版
- Unit 1 Signs Lesson6 (说课稿)-2024-2025学年北师大版(三起)英语四年级上册
- 2025年华师大新版高三地理下册月考试卷含答案
- 2025年人教新起点选择性必修2生物下册月考试卷含答案
- 物业工程管理安全培训课件
- 《文化苦旅》读书分享 PPT
- 氧化铝生产工艺教学拜耳法
- 2023年十八项医疗核心制度考试题与答案
- 气管切开患者气道湿化的护理进展资料 气管切开患者气道湿化
- GB/T 12706.1-2020额定电压1 kV(Um=1.2 kV)到35 kV(Um=40.5 kV)挤包绝缘电力电缆及附件第1部分:额定电压1 kV(Um=1.2 kV)和3 kV(Um=3.6 kV)电缆
- 管理模板:某跨境电商企业组织结构及部门职责
- 底架总组装工艺指导书
- 简单临时工劳动合同模板(3篇)
- 聚酯合成反应动力学
- 上海科技大学,面试
评论
0/150
提交评论