java入门实验.docx

上传人:李司机 文档编号:6798521 上传时间:2024-02-22 格式:DOCX 页数:118 大小:564.34KB
返回 下载 相关 举报
java入门实验.docx_第1页
第1页 / 共118页
java入门实验.docx_第2页
第2页 / 共118页
java入门实验.docx_第3页
第3页 / 共118页
java入门实验.docx_第4页
第4页 / 共118页
java入门实验.docx_第5页
第5页 / 共118页
点击查看更多>>
资源描述

《java入门实验.docx》由会员分享,可在线阅读,更多相关《java入门实验.docx(118页珍藏版)》请在三一办公上搜索。

1、java入门实验1. Java的简单类型及其封装器类1.1 JaVa简单类型与封装类我们知道,Java语言是典型的支持面向对象的程序语言,但考虑到有些基本数据类型的结构简单,占内存小且存取速度快等优点,Java依然提供了对这些非面向对象的简单数据类型的支持。当然,Java在提供大量的其它类时,也提供了与简单数据类型对应的封装类,于是,Java中就有了诸如int和Integer(float和Float、double和Double)的不同的数据类型。Java语言的数据类型有两大类:一类是简单类型,也称主要类型(PrimitiVe),另一类是引用类型(ReferenCe)。简单类型变量中存储的是具体

2、的值,而引用类型的变量中存储的是对象的引用。Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。下表列出了Java中定义的简单类型、占用二进制位数及对应的封装器类。表JaVa中的简单类型简单类型booleanbytecharshortintlongfloatdoublevoid二进制位数18161632643264-封装器类BooleanByteCharaCterShortInte9rLongFloatDoubleVoid1.2为什么使用封装类以int和Integer为例来说,虽然从本质上它们都代表一个32位的整

3、数,但它们却是不同的数据类型。事实上,Java中直接使用的整数都为int(tint和Integer而言),只有当数据必须作为对象的身份出现时,才必须用int对应的封装器Intege将整数值封装成对象。例如:为给java.util包中的Vector添加一个整数,就必须如下将该整数值封装在一个Integer实例中二Vectorv=newVector();int;v.addElemt(newlnteger(k);另夕卜,Integer作为int对应的封装器类,提供了许多的方法,比如:Integer的构造方法、Integer向其它各种数值类型的转换方法等等,而这些是int类型数据所没有的。2. Jav

4、a中的常量我们需要注意以下几种类型的常量。2.1 十六进制整型常量以十六进制表示时,需以OX或OX开头,0xff,0X9Ao2.2 八进制整型常量八进制必须以0开头,如0123,034。2.3 长整型长整型必须以L作结尾,如9L,342L2.4 浮点数常量由于小数常量的默认类型是double型,所以float类型的后面一定要加f(F)。同样带小数的变量默认为double类型。floatf;f=L3f;必须声明fo2.5 字符常量字符型常量需用两个单引号括起来(注意字符串常量是用两个双引号括起来)。JaVa中的字符占两个字节。一些常用的转义字符。r表示接受键盘输入,相当于按下了回车键;n表示换行

5、;t表示制表符,相当于Table键;b表示退格键,相当于BackSpace键;表示单引号;7表示双引号;表示一个斜杠。3.简单数据类型之间的转换简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时。3.1自动转换具体地讲,当一个较“小”数据与一个较“大”的数据一起运算时,系统将自动将“小”数据转换成“大”数据,再进行运算。而在方法调用时,实际参数较“小”,而被调用的方法的形式参数数据又较“大”时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将“小”数据转换成“大”数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最“接近”的“大”数据并

6、进行调用。这些类型由小“到大”分别为(byte,short,char)intlong-floatdouble0这里我们所说的“大”与“小”,并不是指占用字节的多少,而是指表示值的范围的大小。请看下面的示例:下面的语句可以在JaVa中直接通过:byteb;inti=b;longl=b;floatf=b;doubled=b;如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如charc=tc;inti=c;System.out.Println(oUtPUt:+i);输出:output:99;对于byte,short,char三种类型而言,他们是平级的,因此不能相互自

7、动转换,可以使用下述的强制类型转换。shorti=99;charc=(char)i;System,out.printin(,zoutput:zz+c);输出:OUtPUt:c;对象多态中若有方法:f(bytex);f(shortx);f(intx);f(longx);f(floatx);f(doublex);又有:Chary=,A,;那么,语句f(y)会调用哪一个方法呢?答案是:f(intx)方法,因为它的形参比实参“大”且是最“接近”的。而对于方法:f(floatx);f(doublex);又有:longy=123L;辨么,语句f(y)调用的方法则是f(floatx)。3. 2强制转换将“大

8、”数据转换为“小”数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式:intn=(int)3.14159/2;可以想象,这种转换肯定可能会导致溢出或精度的下降。3. 3表达式的数据类型自动提升关于类型的自动提升,注意下面的规则。所有的byte,short,char型的值将被提升为int型;如果有一个操作数是long型,计算结果是long型;如果有一个操作数是float型,计算结果是float型;如果有一个操作数是double型,计算结果是double型;例,byteb;b=3;b=(byte)(b*3);必须声明byte4. 4包装类过渡类型转换一般情况下,我们首先声明一个变量,然后

9、生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:当希望把float型转换为double型时:floatfl=100.OOf;FloatFl=newFloat(fl);doubledl=Fl.doublcValuc();FLdoUbIeValUe()为Float类的返回double值型的方法当希望把double型转换为int型时:doubledl=100.00;DoubleDl=newDouble(dl);intil=Dl.intValue();简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(booleanvalue)、Character(c

10、harvalue)Integer(intvalue)Long(longvalue)Float(floatvalue)Double(doublevalue)而在各个包装类中,总有形为XXVaIUe()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleVaue()可以得到其对应的双精度实型变量。5. 字符串与其它类型间的转换5.1 其它类型向字符串的转换调用类的串转换方法:X.toString();自动转换:X+“”;使用String的方法:String.volueOf(X);

11、5.2 字符串作为值,向其它类型的转换先转换成相应的封装器实例,再调用对应的方法转换成其它类型例如,字符中“32.1”转换double型的值的格式为二newFIOat(“32.1).doubleValue()o也可以用:DoUble.valuef(“32.1).doubleValue()静态parseX方法StringS=T;byteb=Byte.parseByte(s);shortt=Short.parseShort(s);inti=Integer.parselnt(s);longI=Long.parseLong(s);Floatf=Float.parseFloat(s);Doubled=D

12、ouble.parseDouble(s);CharaCter的getNumericValue(charCh)方法具体可查阅apio6. Date类与其它数据类型的相互转换整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:Date(intyear,intmonth,intdate):以int型表示年、月、日Date(intyear,intmonth,intdate,inthrs,intmin):以int型表示年、月、日、时、分Date(intyear,in

13、tmonth,intdate,inthrs,intmin,intsec):以int型表示年、月、日、时、分、秒在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日。时0分0秒的毫秒数。对于这种对应关系,Date类也有其相应的构造函数:Date(Iongdate)o获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear().getMonth()gelDaleO、getHours0kgetMinutesO*getSeconds()get.Day()方法,你也可以将其理解为将Date类转换成into而Date类的ge

14、tTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一痒,Date赛也看一个toString6,法可以将其转换为String类。有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,importjava.text.SimpleDateFormat;importjava.util.*;java.util.Datedate=newjava.util.DateO;如果希望得到YYYYMMDD的格式SimpleDateFormatsyl=newSimpleDateFormat(yyyyMMDD*);StringdateFormat=sy

15、l.format(date);如果希望分开得到年,月,日SimpleDateFormatsy=ncwSimpleDateFormat(*yyyy*);SimpleDateFormatsm=ncwSimpleDatcFormat(*MM*);SimpleDatcFormatsd=newSimpleDateFormatCdcT);Stringsyear=sy.format(date);Stringsmon=sm.format(date);Stringsday=sd.format(date);【实验题11安装JDK步骤如下。1 .打开JDK安装程序,按照提示进行JDK的安装。.环境变量的设定1.右击

16、【我的电脑】,选择属性命令,在高级属性里,切换到高级选项卡,点击环境变量按钮。2 .在系统变量列表框里找到Path,双击Path,在变量已有的值后边填加”;d:jdkbin”,单击确定,进行保存。3 .打开命令提示框,输入java,提示设置成功C:MxruKlenovuC:UseraXlenovoJauUsagesJava(options)class(arsra.)orJava(options)jarjarfile.)toeKBCiiCeJrfile)phereoptIonaIneIudc-clienttoselectthe,client,UHservertoselectte*三rver,*U

17、MotspotisacynonnforCh,cIientelUH(deprecated)ThdvFultUHiclient.YIlcIastsiWFellMChofdIrttCCoiftIesd1Jmfile,-claspathJarFileA:separatedlistofdirectoriesJ自RArchivesandZ1archivestocerchforcsflies.-DeuyrLBruerLyeVMrIiiMtHt:eImty:Jhoaeoutput-Ueraionpriorproductversionandexitver9ion:FeqUireth%ciGdur%iont。En

18、【实验题2】使用eclipse开发简单的小程序HellowWorld步骤如下。1.新建项目:TeXt2 .在项目里新建class类Helloworld3 .编写代码:publicclassHellowWordpublicstaticvoidmain(Stringargs)System,out.PrintIn(Hellowworld!”);)4 .调试运行*cmvwttvvbjavmrtEJwyo*cvVcv,wHavf.CeSyU44xuBellowworld!【实验题3】从键盘输入小写字母,回显并输出其对应的大写字母。步骤如下。1 .新建class类newZimu2 .编写代码publicc

19、lassnewZimupublicstaticvoidmain(Stringargs)try(System.out.print(请输入一个小写字母:”);inta=System,in.read();charb=(char)(a-32);System.out.print(大写字母是:+b);catch(Exceptione)System,out.print(e);)3.调试运行【实验题4】计算个人所得税。设某人月收入为X元(X由键盘输入),假设个人所得税征收方法如下:(1)当800x?1300时,应征税为(-800)*5%;当1300x?2800时,应征税为(x-800)*10%;(2)当280

20、0x?5800时,应征税为(-800)*15%;当5800x?28000时,应征税为(x-800)*20%;(3)当28000x时,应征税为(-800)*30%步骤如下。1 .新建class类salary2 .编写代码:importjava.util.*;publicclasssalarypublicstaticvoidmain(Stringargs)System,out.Print(请输入您的工资:);doubles=newScanner(System,in).nextDouble();doubletax=0;doubleSi=0;inta;if(s800)a=l;elseif(s1300&

21、s2800&s5800s28000)a=5;)elsea=6;switch(a)case 1: tax=(s-800)*0.05;sl=s-tax;break;case 2: tax=(s-800)*0.1;sl=s-tax;break;case 3: tax=(s-800)*0.15;sl=s-tax;break;case 4: tax=(s-800)*0.2;sl=s-tax;break;case 5: tax=(s-800)*0.3;sl=s-tax;break;case 6:tax=O;sl=s;break;System.out.Println(“您应缴税:+tax+”元,您税后工资为

22、Sl);3.调试运行r【实验题5】百鸡,公鸡5元/只,母鸡3元/只,小问题鸡3只/元,问100元买100只鸡,公鸡母鸡小鸡各几何,步骤如下。1 .新建class类chicken2 .编写代码publicclasschickenpublicstaticvoidmain(Stringargs)System.out.printIn(z,百鸡,公鸡5元/只,母鸡3元/只,小问题鸡3只/元,问100元买100只鸡,公鸡母鸡小鸡各几何,”);intmoney=100;intsum=100;intx=0,y=0,z=0;for(x=0;x=100;x+)money=x*5;sum=x;for(y=0;y=1

23、00;y+)(for(z=0;z=100;z+)if(x+y+z=100)&(x*5+y*3+z3=100)System.OUt.println(公鸡+x+只;母鸡+y+”只;小鸡+z+”只);)3.调试运行【实验题6】请输入并运行下面的程序,写出程序的运行结果。publicclassArrayCopypublicstaticvoidmain(Stringargs)inta=1,2,3;intb=a;bl=5;System.out.println(,al=zz+al+,z,bl=*+bl);)步骤如下。1 .新建class类ArrayCopy2.编写代码:publicclassArrayCop

24、ypublicstaticvoidmain(Stringargs)inta=1,2,3);intb=a;bl=5;System.out.println(zal=zzal+z*,bl=+bl);3.调试运行【实验题7】将0,99分别赋给一个包含100个整型元素的数组,并用二分查找法查找元素32、1和1032步骤如下。1 .新建class类Array2.编写代码:publicclassArraystaticbooleanSearch(intnum,intarray)intfront=0;inttail=array,length-1;while(frontnum)tail=middle-1;else

25、front=middle+1;returnfalse;)publicstaticvoidmain(Stringargs)inta;a=newint100;for(inti=0;i=99;i+)for(intj=O;j=i;j+)ai=j;)System.OUt.printIn(查找数字32:+SearCh(32,a);System.out.Println(查找数字1:+SearCh(1,a);System.OUt.println(查找数字1032:+Search(1032,a);)3.运行并调试。【实验题8】编写一个音乐类,属性包括音乐名称、音乐类型,其方法实现音乐信息的显示。并编写测试类。步

26、骤如下。1 .新建class类MusicClass2 .编写代码publicclassMusicClass(Stringname;Stringclassical;publicvoiddisplay()System.out.Println(音乐名称:”+name);System.OUt.println(音乐类型+classical);)3 .新建class类MusicClass_Test4 .编写代码publicclassMusicClass_Testpublicstaticvoidmain(Stringargs)MusicClassmusic=newMusicClass();music,nam

27、e=如果还有明天“;music.classical=z,Rockz;music,displayO;MusicClassmusic2=newMusicClass();music2.name=离歌;music2.Classical=zrRockzr;music2.display();)5 .调试运行【实验题9】编写一个手机类,属性包括手机品牌、手机型号,其方法实现手机信息的显示。并编写测试类。步骤如下。1 .新建class类PhoneClass2 .编写代码:publicclassPhoneClassStringMark;StringNum;publicvoiddisplay()System,ou

28、t.PrintIn(手机品牌:+Mark);System.0皿邛14口1:1。(”手机型号:+1110);3 .新建class类PhoneClass_Test4 .编写代码publicstaticvoidmain(Stringargs)PhoneClassphone=newPhoneClassO;PhOne.Mark=诺基亚;phone.NUnFN81;phone,display();PhoneClassphone2=newPhoneClassO;phone2.Mark=zzApplezr;phone2.NUln=3GS;phone2.display();)5.调试运行【实验题10】编写一个程

29、序,实现设置上月电表读数、设置本月电表读数、显示上月电表读数、显示本月电表读数、计算本月用电数、显示本月用电数、计算本月用电费用、显示本月用电费用功能。并编写测试类。步骤如下。2 .编写代码:importjava.util.*;publicclassAmmeterdoublei_last;doublei_now;doublemoney_last;doublemoney_now;publicvoidSetRecord()System.OUt.printIn(设置本月电表读数:“);i_now=newScanner(System,in).nextDouble();System.out.PrintI

30、n(设置上月电表读数:);i_last=newScanner(System,in).nextDouble();publicvoidShowRecord()System.out.PrintIn(“本月用电(单位:度):+inow);System.out.printIn(上月用电(单位:度):+i_last);)publicvoidCalcUsedFee()System.out.PrintIn(“电费每度O.56元”);money_last=i_last*0.56;money_now=i_now*0.56;System,out.PrintIn(本月电费(单位:元):*+money_now);Sys

31、tem.OUt.printin(上月电费(单位:元):+moneyast);3 .新建class类Ammeter_Test4 .编写代码publicclassAmmeter_Testpublicstaticvoidmain(Stringargs)Ammeteram=newAmmeterO;am.SetRecordO;am.ShowRecord();am.CalcUsedFeeO;)5.运行并调试。【实验题11通过封装编写BOok类。要求:类具有属性书名、书号、主编、出版社、出版时间、页数、价格,其中页数不能少于200页,否则输出错误信息,并强制赋默认值200;为各属性设置赋值和取值方法;具有方

32、法detail。,用来在控制台输出每本书的信息。编写BookTest测试类。为Book对象的属性赋予初始值,然后调用Book对象的detail方法,看看输出是否正确。2、给Book类增加构造方法,同时对测试类也做相应的修改。步骤如下。1 .新建class类Book2 .编写代码publicclassBook(StringName;StringID;StringAuthor;StringBook_Public;StringTime;intPage;doublePrice;publicvoiddetail()if(Page200)System.OUt.printIn(输入页码错误,强制转换为200

33、页);Page=200;Output();)elseOutput();publicvoidOutputOSystem.OUt.printIn(书名是:+Name);System,out.PrintI.n(书号是:+ID);System.OUt.printIn(作者是:+Author);System.OUt.printin(出版社是:+BoOkpUblic);System.OUt.printIn(出版时间是:“+Time);System,out.Printl.n(“页数是:+Page);)3 .新建class类BookTest4 .编写代码importjava.util.Scanner;publ

34、icclassBookTestpublicstaticvoidmain(Stringargs)Bookbk=newBook();System.OUt.printin(请输入书名:);bk.Name=newScanner(System,in).next();System.OUt.println(“请输入书号:);bk.ID=newScanner(System,in).next();System.OUt.println(请输入作者:);bk.Author-newScanner(Systen).in).next();System.OUt.println(请输入出版社:);bk.BookPublic=

35、newScanner(System,in).next();System.OUt.printin(请输入出版日期:;bk.Time=newScanner(System,in).next();System,out.PrintIn(“请输入页数:);bk.Page=newScanner(System,in).nextlntO;bk.detail();5.调试运行【实验题12实现一个名为Person的类和它的两个子类Student和EmployeeoEmployee有子类FaCUIty和Staff。PerSon中的人有姓名、地址和电话号码。StUdent中的学生有班级状态(一、二、三、四年级)。将这些

36、状态定义为常量。EmPIOyee中的雇员有办公室、工资。FaCinty中的教员有级别。Staff中的职员有职务称号。覆盖每个类中的toString方法,显示类名和人名。步骤如下。ass类PerSOnL新建Cl5 .编写代码publicclassPersonprivateStringName;privateStringTel;privateStringAdd;publicPerson(StringName,super();this.Name=Name;this.Tel=Tel;this.Add=Add;publicStringgetName()returnName;)publicStringge

37、tTel()returnTel;)publicStringgetAdd()returnTel;publicStringtoString()return姓名:+Name+”,String Tel, String Add) 地址: + Add + ,电话: Tel+z,class:Person”;classStudentextendsPerson(privateintstudent_Grade;publicStudent(StringName,StringTel,StringAdd,intstudent_Grade)super(Name,Tel,Add);this.student_Grade=st

38、udent_Grade;)publicintgetStudent_Grade()returnstudent_Grade;publicStringtoString()returnsuper.toString()+7z,年级:+StUdent_Grade+”,ClaSsStudent”;)classEmployeeextendsPersonprivateStringOffice;privatedoubleSalary;publicEmployee(StringName,StringTel,StringAdd,StringOffice,doubleSalary)super(Name,Tel,Add)

39、;this.Office=Office;this.Salary=Salary;publicStringgetffice()returnOffice;publicdoublegetSalaryOreturnSalary;publicStringtoString()returnSUPer.toString()+”,办公室:+OffiCe+”,工资:+Salary+”,classEmployeez;)classFacultyextendsEmployee(privateStringLevel;publicFaculty(StringName,StringTel,StringAdd,StringOff

40、ice,doubleSalary,String1.evel)super(Name,Tel,Add,Office,Salary);this.Level=Level;publicStringgetLevel()returnLevel;publicStringtoString()returnsuper.toString()+,教员级别:“+LeVel+”,class:FaCUIty”;classStaffextendsEmployeeprivateStringPost;publicStaff(StringName,StringTel,StringAdd,StringOffice,doubleSala

41、ry,StringPost)super(Name,Tel,Add,Office,Salary);this.Post=Post;publicStringgetPost()returnPost;)publicStringtoString()returnsuper.toString()+zz,职务称号:“+Post+”,class:Staffzz;6 .新建class类Person_Test7 .编写代码publicclassPerson_Textpublicstaticvoidmain(Stringargs)Personzhangsan=newPerSOn(张三,“公安局”);Person1isi

42、-newStUdent(李四,11111111,“城建,1);Personwangwu=newElnPIOyee(王五,1689756666,城建,”计算机系302,2500.00);Employeezhaoliu=newFaCUlty(赵六,10086”,城建”,计算机系203,2700.00,“副教授);Employeeliuqi=newStaff(刘七,10010”,城建,计算机系505”,4500.00,副书记);System.out.printIn(zhangsan.toString();System,out.println(lisi.toString();System.out.pr

43、intln(wangwu.toString();System,out.println(zhaoliu.toStringO);System.out.println(liuqi.toString();)5.调试运行.一一K士一一【实验题13编写动物世界的继承关系代码。动物(AnimaI)包括山羊(GOat)和狼(WOIf),他们吃(eat)的行为不同,山羊吃草,狼吃肉,但走路(Walk)的行为是一致的。通过继承实现以上需求,并编写AnimalTest测试类进行测试。步骤如下:1 .新建class类AnimalTest2 .编写代码classAnimalprivateStringname;privateStringWaIk=走;Animal(Stringname,Stringwalk)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号