Java 实用教程 第 版 习题解答.docx

上传人:b****5 文档编号:8096493 上传时间:2023-01-28 格式:DOCX 页数:44 大小:33.63KB
下载 相关 举报
Java 实用教程 第 版 习题解答.docx_第1页
第1页 / 共44页
Java 实用教程 第 版 习题解答.docx_第2页
第2页 / 共44页
Java 实用教程 第 版 习题解答.docx_第3页
第3页 / 共44页
Java 实用教程 第 版 习题解答.docx_第4页
第4页 / 共44页
Java 实用教程 第 版 习题解答.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

Java 实用教程 第 版 习题解答.docx

《Java 实用教程 第 版 习题解答.docx》由会员分享,可在线阅读,更多相关《Java 实用教程 第 版 习题解答.docx(44页珍藏版)》请在冰豆网上搜索。

Java 实用教程 第 版 习题解答.docx

Java实用教程第版习题解答

习题解答

习题1(第1章)

一、问答题

1.Java语言的主要贡献者是谁?

2.开发Java应用程序需要经过哪些主要步骤?

3.Java源文件是由什么组成的?

一个源文件中必须要有public类吗?

4.如果JDK的安装目录为D:

\jdk,应当怎样设置path和classpath的值?

5.Java源文件的扩展名是什么?

Java字节码的扩展名是什么?

6.如果Java应用程序主类的名字是Bird,编译之后,应当怎样运行该程序?

7.有哪两种编程风格,在格式上各有怎样的特点?

1.JamesGosling

2.需3个步骤:

1)用文本编辑器编写源文件。

2)使用javac编译源文件,得到字节码文件。

3)使用解释器运行程序。

3.源文件由若干个类所构成。

对于应用程序,必须有一个类含有publicstaticvoidmain(Stringargs[])的方法,含有该方法的类称为应用程序的主类。

不一定,但至多有一个public类。

4.setclasspath=D:

\jdk\jre\lib\;.;

5.java和class

6.javaBird

7.独行风格(大括号独占行)和行尾风格(左大扩号在上一行行尾,右大括号独占行)

二、选择题

1.B。

2.D。

1.下列哪个是JDK提供的编译器?

A)

B)

C)

D)

2.下列哪个是Java应用程序主类中正确的main方法?

A)publicvoidmain(Stringargs[])

B)staticvoidmain(Stringargs[])

C)publicstaticvoidMain(Stringargs[])

D)publicstaticvoidmain(Stringargs[])

三、阅读程序

阅读下列Java源文件,并回答问题。

publicclassPerson{

voidspeakHello(){

"您好,很高兴认识您");

"nicetomeetyou");

}

}

classXiti{

publicstaticvoidmain(Stringargs[]){

Personzhang=newPerson();

();

}

}

(a)上述源文件的名字是什么?

(b)编译上述源文件将生成几个字节码文件?

这些字节码文件的名字都是什么?

(c)在命令行执行javaPerson得到怎样的错误提示?

执行javaxiti得到怎样的错误提示?

执行java得到怎样的错误提示?

执行javaXiti得到怎样的输出结果?

1.(a)。

(b)两个字节码,分别是和。

(c)得到“NoSuchMethodError”,得到“NoClassDefFoundError:

Xiti/class”,得到“您好,很高兴认识您nicetomeetyou”

习题2(第2章)

一、问答题

1.什么叫标识符?

标识符的规则是什么?

false是否可以作为标识符。

2.什么叫关键字?

true和false是否是关键字?

请说出6个关键字。

3.Java的基本数据类型都是什么?

4.float型常量和double型常量在表示上有什么区别?

5.怎样获取一维数组的长度,怎样获取二维数组中一维数组的个数。

1.用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。

标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。

false不是标识符。

2.关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。

true和false不是关键字。

6个关键字:

classimplementsinterfaceenumextendsabstract。

3.boolean,char,byte,short,int,long,float,double。

4.float常量必须用F或f为后缀。

double常量用D或d为后缀,但允许省略后缀。

5.一维数组名.length。

二维数组名.length。

二、选择题

2.下列哪三项是正确的float变量的声明?

adf

A.floatfoo=-1;

B.floatfoo=;

C.floatfoo=42e1;

D.floatfoo=;

E.floatfoo=;

F.floatfoo=0x0123;

3.下列哪一项叙述是正确的?

b

A.char型字符在Unicode表中的位置范围是0至32767

B.char型字符在Unicode表中的位置范围是0至65535

C.char型字符在Unicode表中的位置范围是0至65536

D.char型字符在Unicode表中的位置范围是-32768至32767

4.以下哪两项是正确的char型变量的声明?

be

A.charch="R";

B.charch='\\'

C.charch='ABCD';

D.charch="ABCD";

E.charch='\ucafe';

F.charch='\u10100'

5.下列程序中哪些【代码】是错误的?

2345

publicclassE{

publicstaticvoidmain(Stringargs[]){

intx=8;

byteb=127;的值是3。

B.a[1]的值是1。

C.a[0]的值是0。

D.a[]的值等于a[2]的值。

1.C。

2.ADF。

3.B。

4.BE。

5.【代码2】【代码3】【代码4】【代码5】。

6.B。

三、阅读或调试程序

1.属于操作题,解答略。

2.属于操作题,解答略。

3.属于操作题,解答略。

4.下列程序标注的【代码1】,【代码2】的输出结果是什么?

publicclassE{

publicstaticvoidmain(Stringargs[]){

long[]a={1,2,3,4};

long[]b={100,200,300,400,500};

b=a;

"数组b的长度:

"+;列程序标注的【代码1】,【代码2】的输出结果是什么?

publicclassE{

publicstaticvoidmain(Stringargs[]){

int[]a={10,20,30,40},b[]={{1,2},{4,5,6,7}};

b[0]=a;

b[0][1]=b[1][3];

publicclassE{

publicstaticvoidmain(Stringargs[]){

'你');

'我');

'他');

}

}

2.publicclassE{

publicstaticvoidmain(Stringargs[]){

charcStart='α',cEnd='ω';

for(charc=cStart;c<=cEnd;c++)

""+c);

}

}

习题3(第3章)

一、问答题

1.关系运算符的运算结果是怎样的数据类型?

2.if语句中的条件表达式的值是否可以是int型?

3.while语句中的条件表达式的值是什么类型?

4.switch语句中必须有default选项码?

5.在while语句的循环体中,执行break语句的效果是什么?

6.可以用for语句代替while语句的作用吗?

1.boolean

2.不可以

3.boolean

4.不是必须的

5.结束while语句的执行

6.可以

二、选择题

1.下列哪个叙述是正确的?

a

A.2+10的结果是double型数据。

B.(int)+的结果是int型数据。

C.'苹'+'果'的结果是char型数据。

D.(short)10+'a'的结果是short型数据。

2.用下列哪个代码替换程序标注的【代码】会导致编译错误?

c

A.m-->0B.m++>0C.m=0D.m>100&&true

publicclassE{

publicstaticvoidmain(Stringargs[]){

intm=10,n=0;

while(【代码】){

n++;

}

}

}

3.假设有intx=1;以下哪个代码导致“可能损失精度,找到int需要char”这样的编译错误。

c

A.shortt=12+'a';B.charc='a'+1;C.charm='a'+x;D.byten='a'+1;

1.A。

2.C。

3.C。

三、阅读程序

1.下列程序的输出结果是什么?

publicclassE{

publicstaticvoidmain(Stringargs[]){

charx='你',y='e',z='吃';

if(x>'A'){

y='苹';

z='果';

}

else

y='酸';

z='甜';

","+y+","+z);

}

}

2.下列程序的输出结果是什么?

publicclassE{

publicstaticvoidmain(Stringargs[]){

charc='\0';

for(inti=1;i<=4;i++){

switch(i){

case1:

c='J';

case2:

c='e';

break;

case3:

c='p';

default:

"好");

}

}

}

}

3.下列程序的输出结果是什么?

publicclassE{

publicstaticvoidmain(String[]args){

intx=1,y=6;

while(y-->0){

x--;

}

"x="+x+",y="+y);

}

}

x=0,y=5

x=-1,y=4

x=-2,y=3

x=-3,y=2

x=-4,y=1

x=-5,y=0

x=-5,y=-1

1.你,苹,甜

2.Jeep好好

3.x=-5,y=-1

四、编程序题

1.编写应用程序求1!

+2!

+…+10!

2.编写一个应用程序求100以内的全部素数。

3.分别用do-while和for循环计算1+1/2!

+1/3!

+1/4!

……的前20项和。

4.一个数如果恰好等于它的因子之和,这个数就称为“完数”。

编写应用程序求1000之内的所有完数。

5.编写应用程序,使用for循环语句计算8+88+888…前10项之和。

6.编写应用程序,输出满足1+2+3…+n<8888的最大正整数n。

1.publicclassXiti1{

publicstaticvoidmain(Stringargs[]){

doublesum=0,a=1;

inti=1;

while(i<=20){

sum=sum+a;

i++;

a=a*i;

}

"sum="+sum);

}

}

2.publicclassXiti2{

publicstaticvoidmain(Stringargs[]){

inti,j;

for(j=2;j<=100;j++){

for(i=2;i<=j/2;i++){

if(j%i==0)

break;

}

if(i>j/2){

""+j);

}

}

}

}

3.classXiti3{

publicstaticvoidmain(Stringargs[]){

doublesum=0,a=1,i=1;

do{sum=sum+a;

i++;

a=i)*a;

}

while(i<=20);

"使用do-while循环计算的sum="+sum);

for(sum=0,i=1,a=1;i<=20;i++){

a=a*i);

sum=sum+a;

}

"使用for循环计算的sum="+sum);

}

}

4.publicclassXiti4{

publicstaticvoidmain(Stringargs[]){

intsum=0,i,j;

for(i=1;i<=1000;i++){

for(j=1,sum=0;j

if(i%j==0)

sum=sum+j;

}

if(sum==i)

"完数:

"+i);

}

}

}

5.publicclassXiti5{

publicstaticvoidmain(Stringargs[]){

intm=8,item=m,i=1;

longsum=0;

for(i=1,sum=0,item=m;i<=10;i++){

sum=sum+item;

item=item*10+m;

}

}

}

6.publicclassXiti6{

publicstaticvoidmain(Stringargs[]){

intn=1;

longsum=0;

while(true){

sum=sum+n;

n++;

if(sum>=8888)

break;

}

"满足条件的最大整数:

"+(n-1));

}

}

习题4(第4章)

一、问答题

1.面向对象语言有哪三个特性?

2.类名应当遵守怎样的编程风格?

3.变量和方法的名字应当遵守怎样的编程风格?

4.类体内容中声明成员变量是为了体现对象的属性还是行为?

5.类体内容中定义的非构造方法是为了体现对象的属性还是行为?

6.什么时候使用构造方法?

构造方法有类型吗?

7.类中的实例变量在什么时候会被分配内存空间?

8.什么叫方法的重载?

构造方法可以重载吗?

9.类中的实例方法可以操作类变量(static变量)吗?

类方法(static方法)可以操作实例变量吗?

可以。

不可以。

10.类中的实例方法可以用类名直接调用吗?

8.一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。

可以。

9.

10.不可以。

11.简述类变量和实例变量的区别。

12.this关键字代表什么?

this可以出现在类方法中吗?

1.封装、继承和多态。

2.当类名由几个单词复合而成时,每个单词的首字母使用大写。

3.名字的首单词的首字母使用小写,如果变量的名字由多个单词组成,从第2个单词开始的其它单词的首字母使用大写。

4.属性

5.行为

6.用类创建对象时。

没有类型

7.用类创建对象时。

8.一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。

可以。

9.可以。

不可以。

10.不可以。

11.一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间。

所有对象的类变量都分配给相同的一处内存,对象共享类变量。

12.代表调用当前方法的对象。

不可以。

二、选择题

1.下列哪个叙述是正确的?

b

A.Java应用程序由若干个类所构成,这些类必须在一个源文件中。

B.Java应用程序由若干个类所构成,这些类可以在一个源文件中,也可以分布在若干个源文件中,其中必须有一个源文件含有主类。

C.Java源文件必须含有主类。

D.Java源文件如果含有主类,主类必须是public类。

2.下列哪个叙述是正确的?

d

A.成员变量的名字不可以和局部变量的相同。

B.方法的参数的名字可以和方法中声明的局部变量的名字相同。

C.成员变量没有默认值。

D.局部变量没有默认值。

3.对于下列Hello类,哪个叙述是正确的?

d

A.Hello类有2个构造方法。

B.Hello类的intHello()方法是错误的方法。

C.Hello类没有构造方法。

D.Hello无法通过编译,因为其中的hello方法的方法头是错误的(没有类型)。

classHello{

Hello(intm){

}

intHello(){

return20;

}

hello(){

}

}

4.对于下列Dog类,哪个叙述是错误的?

d

A.Dog(intm)与Dog(doublem)互为重载的构造方法。

B.intDog(intm)与voidDog(doublem)互为重载的非构造方法。

C.Dog类只有两个构造方法,而且没有无参数的构造方法。

D.Dog类有3个构造方法。

classDog{

Dog(intm){

}

Dog(doublem){

}

intDog(intm){

return23;

}

voidDog(doublem){

}

}

构造方法是一种特殊的方法,与一般的方法不同是:

1.构造方法的名字必须与定义他的类名完全相同,没有,甚至连void也没有。

2.构造方法的调用是在创建一个对象时使用new操作进行的。

构造方法的作用是初始化对象。

3.不能被static、final、synchronized、abstract和native修饰。

构造方法不能被子类继承。

5.下列哪些类声明是错误的?

cd

A)classA

B)publicclassA

C)protectedclassA

D)privateclassA

6.下列A类中【代码1】~【代码5】哪些是错误的?

14

classTom{

privateintx=120;

protectedinty=20;

intz=11;

privatevoidf(){

x=200;

}

voidg(){

x=200;

}

}

publicclassA{

publicstaticvoidmain(Stringargs[]){

Tomtom=newTom();

=22;LakeLake.x){27。

4.【代码1】:

100,【代码2】:

5.上机实习题目,解答略。

6.上机实习题目,解答略。

四、编程题

 

用类描述计算机中CPU的速度和硬盘的容量。

要求Java应用程序有4个类,名字分别是PC,CPU和HardDisk和Test,其中Test是主类。

●PC类与CPU和HardDisk类关联的UML图(图)

其中,CPU类要求getSpeed()返回speed的值;要求setSpeed(intm)方法将参数m的值赋值给speed。

HardDisk类要求getAmount()返回amount的值,要求setAmount(intm)方法将参数m的值赋值给amount。

PC类要求setCUP(CPUc)将参数c的值赋值给cpu,要求setHardDisk(HardDiskh)方法将参数h的值赋值给HD,要求show()方法能显示cpu的速度和硬盘的容量。

●主类Test的要求

1main方法中创建一个CPU对象cpu,cpu将自己的speed设置为2200,

2main方法中创建一个HardDisk对象disk,disk将自己的amount设置为200,

3main方法中创建一个PC对象pc,

4pc调用setCUP(CPUc)方法,调用时实参是cpu,

5pc调用setHardDisk(HardDiskh)方法,调用时实参是disk,

6pc调用show()方法。

 

publicclassCPU{

intspeed;

intgetSpeed(){

returnspeed;

}

publicvoidsetSpeed(intspeed){

=speed;

}

}

publicclassHardDisk{

intamount;

intgetAmount(){

returnamount;

}

publicvoidsetAmount(intamount){

=amount;

}

}

publicclassPC{

CPUcpu;

HardDiskHD;

voidsetCPU(CPUcpu){

=cpu;

}

voidsetHardDisk(HardDiskHD){

=HD;

}

voidshow(){

"CPU速度:

"+());

"硬盘容量:

"+());

}

}

publicclassTest{

publicstaticvoidmain(Stringargs[]){

CPUcpu=newCPU();

HardDiskHD=newHardDisk();

(2200);

(200);

PCpc=newPC();

(cpu);

(HD);

();

}

}

习题5(第5章)

一、问答题

1.子类可以有多个父类吗?

2.包中的Object类是所有其他类的祖先类吗?

3.如果子类和父类不在同一个包中,子类是否继承父类的友好成员?

4.子类怎样隐藏继承的成员变量?

5.子类重写方法的规则是怎样的?

重写方法的目的是什么?

6.父类的final方法可以被子类重写吗?

7.什么类中可以有abstract方法?

8.对象的上转型对象有怎样的特点?

9.一个类的各个子类是怎样体现多态的?

10.面向抽象编程的目的和核心是什么?

1.不可以。

2.是。

3.不继承。

4.声明与父类同名的成员变量。

5.子类重写的方法类型和父类的方法的类型一致或者是父类的方法的类型的子类型,重写的方法的名字、参数个数、参数的类型和父类的方法完全相同。

重写方法的目的是隐藏继承的方法,子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。

6.不可以。

7.abstract类。

8.上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。

上转型对象可以访问子类继承或隐藏的成员变量,可以调用子类继承的方法或子类重写的实例方法。

9.通过重写方法。

10.面向抽象编程目的是为了应对用户需求的变化,核心是让类中每种可能的变化对应地交给抽象类的一个子类类去负责,从而让该类的设计者不去关心具体实现。

二、选择题

1.下列哪个叙述是正确的?

c

E.子类继承父类的构造方法。

F.abstract类的子类必须是非abstract类。

G.

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1