JAVA课后习题(部分)_第1页
JAVA课后习题(部分)_第2页
JAVA课后习题(部分)_第3页
JAVA课后习题(部分)_第4页
JAVA课后习题(部分)_第5页
已阅读5页,还剩13页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第一章引论

1.试列出出3个生活中类与对象的实例(如文中所举汽车类的例子)

举例:(1)人类张三

(2)水果类苹果

(3)电器类电视

2.JAVA的常用开发环境有哪些,各自的优缺点是什么?

(1)JDK(JavaDevelopmentKit)Java开发工具集

优点:从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之

间的关系,有利于理解Java面向对象的设计思想。JDK的另一个显著特点是随着Java(J2EE、

J2SE以及J2ME)版本的升级而升级。

缺点:也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的

Java软件开发,也不利于团体协同开发。

(2)JavaWorkshop

(3)NetBeans与SunJavaStudio5

NetBeans是开放源码的Java集成开发环境(IDE),适用于各种客户机和Web应用。

SunJavaStudio是Sun公司最新发布的商用全功能JavalDE,支持Solaris、Linux和Win

dows平台,适于创建和部署2层JavaWeb应用和n层J2EE应用的企业开发人员使用。

NetBeans是业界第一款支持创新型Java开发的开放源码IDE。开发人员可以利用业界强

大的开发工具来构建桌面、Web或移动应用。同时,通过NetBeans和开放的API的模块化

结构,第三方能够非常轻松地扩展或集成NetBeans平台。

NetBeans3.5.1主要针对一般Java软件的开发者,而JavaOneStudio5则主要针对企

业做网络服务等应用的开发者。Sun不久还将推出ProjectRave,其目标是帮助企业的开

发者进行软件开发。NetBeans351版本与其他开发工具相比,最大区别在于不仅能够

开发各种台式机上的应用,而且可以用来开发网络服务方面的应用,可以开发基于J2ME

的移动设备上的应用等。在NetBeans3.5.1基础上,Sun开发出了Java

OneStudio5,为用户提供了一个更加先进的企业编程环境。在新的Java

OneStudio5里有一个应用框架,开发者可以利用这些模块快速开发自己在网络服务方面

的各种应用程序。

(4)Eclipse

Eclipse是一种可扩展的开放源代码IDE。2001年11月,IBM公司捐出价值4,000万美

元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。集成开发环境(I

DE)经常将其应用范围限定在"开发、构建和调试〃的周期之中。为了帮助集成开发环境

(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。Eclipse允许在同一IDE中

集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作

流程,使开发者可以专注在实际的嵌入式目标上。

Eclipse框架的这种灵活性来源于其扩展点。它们是在XML中定义的已知接口,并充

当插件的耦合点。扩展点的范围包括从用在常规表述过滤器中的简单字符串,到一个Jav

a类的描述。任何Eclipse插件定义的扩展点都能够被其它插件使用,反之,任何Eclipse

插件也可以遵从其它插件定义的扩展点。除了解由扩展点定义的接口外,插件不知道它

们通过扩展点提供的服务将如何被使用。

利用Eclipse,我们可以将高级设计(也许是采用UML)与低级开发工具(如应用调试器

等)结合在一起。如果这些互相补充的独立工具采用Eclipse扩展点彼此连接,那么当我

们用调试器逐一检查应用时,UML对话框可以突出显示我们正在关注的器件。事实上,由

于Eclipse并不了解开发语言,所以无论Java语言调试器、C/C++调试器还是汇编调试器

都是有效的,并可以在相同的框架内同时瞄准不同的进程或节点。

Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件,这类似于

微软公司的VisualStudio和Sun微系统公司的NetBeans平台。Eclipse为工具开发商提供

了更好的灵活性,使他们能更好地控制自己的软件技术.Eclipse联盟已经宣布将在2004

年中期发布其3.0版软件。这是一款非常受欢迎的java开发工具,这国内的用户越来越多

,实际上实用它java开发人员是最多的。缺点就是较复杂,对初学者来说,理解起来比

较困难。

现在常用的Java项目开发环境有:JBuilder、VisualAgeforJava、Fortefor

Java,VisualCafe、Eclipse、NetBeansIDE、JCreator+J2SDK、jdk+记事本、EditPI

us+J2SDK等等。一般开发J2EE项目时都需要安装各公司的应用服务器(中间件)和相应

的开发工具,在使用这些开发工具之前,我们最好能熟知这些软件的优点和缺点,以便

根据实际情况选择应用。编程工具只是工具,为了方便人们工作而开发的,各有特点,

因此,选工具主要的依据自己将要从事的领域是什么,而不是盲目的认为那种工具好,

那种工具不好。

第二章JAVA语言基础

1.CD2,B3.标识符

4.在Java中,标识符是代表程序中某个方法或变量赋予的一个名称,而这个名称不能是关键

字,因为关键字是系统已经定义并使用的,是由数字、字母、下划线(-)和美元符号($)

开头,区分大小写的,且要求首位不能是数字。

关键字就是诸如publicstaticclass之类的单词他们在JAVA中起各种运算或修饰的作用

不能作为变量名、方法名、类名、包名,所有的关键字都要小写。

5.合法的变量名:A=B,_bbb变量4,addNum,数字1

非法的变量名:除了以上都为非法。

6.简述标识符的命名规则。

①类和接口名:每个单词的首字母大写,可包含大小写

②方法名:首字母小写,其余单词的首字母大写,可包含大小写,尽量少用下划线。

③变量名:基本数据类型的常量名全部用大写字母,词与词之间用下划线分隔,对象常量可

大小写混写。

④变量名:可大小写混写,首字母小写,以后每个单词的首字母大写,不用下划线,少用美

元符号。给变量命名时尽量做到见名知意。

7JAVA的基本数据类型有哪些?

JAVA的基本数据类型包括:整型、浮点型、布尔型和字符型。其中整型数据类型包括短整

型、整型、长整型和字节型。浮点数据类型包括单精度浮点型和双精度浮点型。

8.在JAVA的基本数据类型中,可以表示数字的有哪些?int、byte、float,double

9.

publicclassPerson{

privateStringname;

privateintage;

privateStringcollege;

privateStringdepartment;

privateStringbanji;

publicPerson(Stringname,intage.Stringcollege.Stringdepartment,Stringbanji){

this.name=name;

this.age=age;

this.college=college;

this.department=department;

this.banji=banji;

}

publicStringgetName(){

returnname;

}

publicintgetAge(){

returnage;

}

publicStringgetCollege(){

returncollege;

}

publicStringgetDepartment(){

returndepartment;

}

publicStringgetBanji(){

returnbanji;

}

publicstaticvoidmain(String[]args){

Personp=newPersonC'name">20,“吕梁学院","计算机系软件工程1401班”);

System.out.println("name="+p.getName());

System.out.println("age="+p.getAge());

System.out.printIn("college="+p.getCollege());

System.out.println("department=,'+p.getDepartment());

System.out.println("banji="+p.getBanji());

}

第三章运算符与表达式

1.B2.B

3.

abs

class

length

size

4.1。行

注意:源程序有一处错误:最后一行:System.out.printin("\t"+a);

5.46

6.8

7.分别用if、switch两种语句编写将0-11的整数转换未十二个月份的程序段,假定数字0

对应1月份。

(1)if

importjava.io.BufferedReader;

importjava.io.InputStreamReader;

publicclassTest{

publicstaticvoidmain(String[]args){

System.out.print("请输入一个0-11之间的数字:”);

intnum=0;

try{

BufferedReaderbr=newBufferedReader(newInputStreamReader(

System.in));

num=Integer.parselnt(br.readLine());

}catch(java.lang.NumberFormatExceptionnfe){

System.out.printin("输入的不是数字!");

}catch(Exceptionex){

ex.printStackTrace();

)

if(num<0||num>11){

System.out.printin("对不起你输入的不合法,请重新输入:

)

if(num==0)

System.out.printIn(“1月份”);

if(num==1)

System.out.printIn(“2月份");

if(num==2)

System.out.println("3月份");

if(num==3)

System.out.printin("4月份,,);

if(num==4)

System.out.printin("5月份“);

if(num==5)

System.out.printin("6月份");

if(num==6)

System.out.printin(“7月份");

if(num==7)

System.out.printin(“8月份“);

if(num==8)

System.out.printin(“9月份“);

if(num==9)

System.out.printIn(“10月份");

if(num==10)

System.out.printIn("11月份,,);

if(num==11)

System.out.printin("12月份”);

}

)

(2)使用switch

importjava.io.BufferedReader;

importjava.io.InputStreamReader;

publicclassTest{

publicstaticvoidmain(String[]args){

System.out.print("请输入一个0Tl之间的数字:”);

intnum=0;

try{

BufferedReaderbr=newBufferedReader(new

InputStreamReader(System.in));

num=Integer.parselnt(br.readLine());

}

catch(java.lang.NumberFormatExceptionnfe){

System.out.printin("输入的不是数字!”);

)

catch(Exceptionex){

ex.printStackTrace();

)

if(num<0||num>ll){

System.out.printin("对不起你输入的不合法,请重新输入:”);

)

switch(num){

case0:

System,out.printIn(num+l+”月份”);

break;

case1:

System.out.printIn(num+l+“月份”);

break;

case2:

System.out.printin(num+l+"月份");

break;

case3:

System.out.printIn(num+l+"月份”);

break;

case4:

System.out.printIn(num+l+"月份");

break;

case5:

System.out.printin(num+l+"月份");

break;

case6:

System.out.printin(num+l+"月份");

break;

case7:

System.out.printin(num+l+"月份");

break;

case8:

System.out.printin(num+l+"月份");

break;

case9:

System.out.printin(num+l+"月份”);

break;

case10:

System.out.printin(num+l+"月份");

break;

case11:

System.out.printin(num+l+"月份");

break;

I

}

}

第四章数组

i-6XXXJ义J

7.B8.B9.C10.B11.选项全部正确12.D13.D

14.索引Array,length15.堆

16.017.下标越界18.foreach循环19.二20.整型或int

21.

publicclassArray{

publicstaticvoidmain(Stringargs[])

{

inta[]=newint[]{1,3,5,7,9,11,13,15,17,19};

for(intj=0;j<a.length/2;j++)

{

ints=a[j]]

a[j]=a[a.length-j-l];

a[a.length-j-l]=s;

}

for(inti=0;i<a.length;i++){

System.out.print(a[i]+"");

)

}

}

22.

publicclassStudentInAndOut{

privateStringname;

privatelonggrade;

publiclonggetGrade(){

returngrade;

}

publicvoidsetGrade(longgrade){

this.grade=grade;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicStringtoString(){

returnthis.name;

}

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

System.out.printin(“请输入学生数”);

intstuNumT=sc.nextlnt();

StudentlnAndOutobjArr[]=newStudentlnAndOut[stuNumT];

for(inti=0;i<objArr.length;i++){

objArr[i]=newStudentlnAndOut();

System.out.printin("请输入第"+(i+1)+”个学生的姓名”);

Stringname=sc.next();

objArr[i].setName(name);

System,out.printin("请输入第“+(i+1)+”个学生的成绩”);

longgrade=sc.nextLong();

objArr[i].setGrade(grade);

}

System.out.printIn(“打印开始:

for(inti=0;i<objArr.length;i++){

for(intj=i+1;j<objArr.length;j++){

if(objArr[i].getGrade()<objArr[j].getGrade()){

StudentlnAndOuts=newStudentlnAndOut();

s=objArr[i];

objArr[i]=objArr[j];

objArr[j]=s;

}

}

}

for(inti=0;i<objArr.length;i++){

System.out.printin(objArr[i].getName()+”的成绩是:

"+objArr[i].getGrade());

}

)

}

23.

publicclassMinArcay{

publicstaticvoidmain(String[]args){

int[]num=newint[]{5,6,1,4,3,6,1,8,1,6};

intmin=num[0];

intn=0;

System.out.print("最小数的下标为:”);

for(inti=1;i<num.length;i++){

if(num[i]<=min){

min=num[i];

n=i;

System.out.print(""+n);

)

}

}

24.

publicclassMerge{

publicstaticvoidmain(Stringargs[]){

inta[]={1,7,9,11,13,15,17,19};

intb[]={2,%6,8,10};

//C是合并后的数组,初始化数组长度是a和b的长度总和。

intc[]=newint[a.length+b.length];

inti,j,m,M;

for(i=0^j=03m=0;j<b.length;m++)

(

if(a[i]<b[j]){

c[m]=a[i];

i++;

}

else(

c[m]=b[j];

j++;

)

)

for(;i<a.length;i++,m++)

c[m]=a[i];

for(m=0;m<c.length;m++)

System.out.print("c["+m+"]="+c[m]);

}}

第五章类和对象

l.D2.A3.CD4.B5.BC6,D7.A8.C9.A

10.

“Account类

publicclassAccount{

privateStringname;//账户名称

privatefloatbalance;//用户的账户余额

publicAccount(Stringname,floatbalance){//开户(设置账户名称及余额),

=name;

this.balance=balance;

}

publicStringsearch(){//查询余额

return”账户名称:"++"\t\t"+"余额为:"+this.balance+"元整”;

)

publicStringgetName(){

returnname;

)

publicvoidsetName(Stringname){

=name;

)

publicfloatgetBalance(){

returnbalance;

)

publicvoidsetBalance(floatbalance){

this.balance=balance;

)

)

//Test类

publicclassTest{

publicstaticvoidmain(String[]args){

Accountaccl=newAccount("conan",100000f);//利用构造方法开户

System.out.println(accl・search。);〃查询余额

)

}

11.

//Book类

publicclassBook{

privateStringname;

privateintno=000;

privatefloatprice;

privatestaticintcount=0;

privatestaticintsumCnt=0;

publicBook(Stringname,floatprice,intcount){

this.sumCnt=this.sumCnt+count;

this.no=sumCnt;

=name;

this.price=price;

this.count=count;

}

publicvoidprint(){

System.out.printIn("书名:"+this.getName()+"\t"+"编号:"

+this.getNo()+"\t"+"价格:”+this.getPrice()+"\t"

+"册数:"+this.getCount());

System.out.println("\n"+"总册书为:”+sumCnt);

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

=name;

)

publicfloatgetPrice(){

returnprice;

)

publicvoidsetPrice(floatprice){

this.price=price;

}

publicstaticintgetCount(){

returncount;

}

publicstaticvoidsetCount(intcount){

Book.count=count;

)

publicintgetNo(){

returnno;

}

publicvoidsetNo(intno){

this.no=no;

}

publicstaticintgetSumCnt(){

returnsumCnt;

)

publicstaticvoidsetSumCnt(intsumCnt){

Book.sumCnt=sumCnt;

)

)

//Practice类

publicclassPractice{

publicstaticvoidmain(Stringargs[]){

Bookbookl=newBook("Java开发实战经典179.8f,10);

bookl.print();

Bookbook2=newBook("Java大学实用教程”,20.5f,4);

book2.print();

Bookbook3=newBook("名侦探柯南“,36.0f,6);

book3.print();

Bookbook4=newBook("JavaEE基础实用教程“,26.8f,10);

book4.print();

}

)

第六章类的继承与多态性

1.子类或派生类;父类、超类或基类;A;B;父类中不包含子类的全部,内存会越界。

2.Public;protected;不能继承

3.软件复用

4.构造函数和析构函数不可以继承。派生类构造函数各部分的执行次序:先执行基类的构造函数,在执

行子类的构造函数。

5.派生类的同名覆盖:在子类中,定义名称、参数个数和类型均与父类相同的方法,实现对父类方法的

覆盖。

6.3个生活中继承的实例:

(1)父类:学生类,包含成员变量:姓名,年龄,性别;成员方法Study.

派生类:小学生、中学生、大学生等,这三个类都要重写Study方法。

(2)略

7.3个生活中多态的实例:

(1)每个人都有自己的兴趣爱好用方法Hobby。.有人喜欢playbasketball,有人喜欢singsong,有人

喜欢playfootball

(2)略

8.7

3

9.False

true

false

true

true

true

0

0

0

10.//父类:student类

publicclassstudent{

Stringname;

intage;

publicvoidStudy(){

}

}

〃子类;pupil类

publicclasspupilextendsstudent{

publicvoidStudy(){

name="小学生

age=10;

("我们是年龄是

System.out.print"+name+”,"+age+">");

System.out.printin("机械学习”);

}

}

〃子类:Junion类

publicclassJuniorextendsstudent{

publicvoidStudy(){

name=“中学生I

age=15;

System.out.print("我们是"+name+“,年龄是“+age+”J);

System.out.printin(“思维学习");

}

}

〃子类:Undergraduate类

publicclassUndergraduateextendsstudent{

publicvoidStudy(){

name="大学生";

age=20;

System.out.print("我们是"+name+1年龄是"+age+”」);

System.out.println("专业学习”);

}

}

〃测试继承

publicclassExtendsTest{

publicstaticvoidmain(String[]args){

pupilp=newpupil();

Juniorj=newJunior。;

Undergraduateu=newUndergraduate。;

p.Study();

j.StudyO;

u.Study();

}}

11.//父类:Game类

publicclassGame{

protectedvoidhobby(){

System.out.printin("playgame");

}

}

〃子类;Football类

publicclassFootballextendsGame{

publicvoidhobby(){

System.out.printin("playfootball");

}

}

〃子类:Basketball类

publicclassBasketballextendsGame{

publicvoidhobby(){

System.out.printin("playbasketball");

}

)

〃子类:Sing类

publicclassSingextendsGame{

publicvoidhobby(){

System.out.printin("singsong");

}

}

〃测试多态

publicclassPolymorphicTest{

publicstaticvoidmain(String[]args){

Game[]games=newGame[10];

games[0]=newBasketball();

games[l]=newFootball();

games[2]=newSing();

for(inti=0;i<games.length;i++)

{

if(games[i]!=null)

games[i].hobby();

}

}

)

12.〃长方体类:Cuboid

publicclassCuboid{

double11;//长

doublewl;//宽

doublehl;//高

publicdoublegetLl(){

return11;

}

publicvoidsetLl(double11){

this.11=11;

}

publicdoublegetWl(){

returnwl;

}

publicvoidsetWl(doublewl){

this.wl=wl;

}

publicdoublegetHl(){

returnhl;

}

publicvoidsetHl(doublehl){

this.hl=hl;

}

publicdoublevol(double11,doublehl,doublewl){

return11*hl*wl;

}

}

〃子类:Cub

publicclassCubextendsCuboid{

doublewl;//重量

publicdoublesarea(double11,doublehl,doublewl){

return(11*hl+hl*wl+wl*11)*2;

}

publicstaticvoidmain(String[]args){

Cubex=newCub();//对长方体实例化

//对长方体赋值

ex.setHl(3);

ex.setWl(4);

ex.setLl(5);

//输出长方体的表面积和体积

System.out.println("长方体的体积为:”

+ex.vol(ex.getLI(),ex.getHl()?ex.getWl()));

System.out.printin("长方体的表面积为:”

+ex.sarea(ex.getLl()3ex.getHlO>ex.getWl()));

}

)

第七章内部类和异常

l.A2.A

3,异常:在程序运行过程中发生的除正常情况以外的所有现象,是导致程序中断运行的一种

指令流。

常见的异常:算术异常类:ArithmeticException空指针异常类:NullPointerException

类型强制转换异常:ClassCastException数组负下标异常:NegativeArrayException

数组下标越界异常:ArraylndexOutOfBoundsException

方法未找到异常:NoSuchMethodException

文件未找到异常:FileNotFoundException

4.java异常处理机制:java中声明了很多异常类,每个异常类都代表了一种运行错误,类中

包含了该运行错误的信息和处理错误的方法等内容。每当java程序运行过程中发生一个可

识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常

类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一定有相应的机制来处理

它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全

性。这就是java的异常处理机制。

异常处理机制的优点:(1)当发生错误时,程序不至于崩溃。

(2)当发生错误时,可以在短时间内找到错误所在行,能节省时间。

5.系统定义异常的特定情况出现的问题,而此时用来对可能遇到的问题进行处理。

用户定义的异常是自己觉得可能会出现问题时,需要处理的。这样避免程序中断或是出现未

知错误。

6.发生了异常

Fianlly!

第八章多线程

1-4TTFF

5.A6.A7.ABC8.C9.B10.B

1L线程12.继承Thread类和实现Runnable接口

13.并发

1

温馨提示

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

评论

0/150

提交评论