《Java2实用教程》课后习题参考答案.docx
《《Java2实用教程》课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《《Java2实用教程》课后习题参考答案.docx(86页珍藏版)》请在冰豆网上搜索。
《Java2实用教程》课后习题参考答案
《Java2实用教程》课后习题参考答案
Java2实用教程(第三版)
课后习题参考答案
第1章Java入门
1.开发与运行Java程序需要经过哪些主要步骤和过程?
答:
(1)编写Java源文件:
使用文本编辑器(Edit或记事本),拓展名为.java
(2)编译Java源文件:
使用Java编译器(javac.exe)。
得到字节码文件*.class
(3)运行Java程序:
Java应用程序使用Java解释器(java.exe)执行字节码文件;
Java小应用程序使用支持Java标准的浏览器来执行。
2.怎样区分应用程序和小应用程序?
应用程序的主类或小应用程序的主类必须用public修饰吗?
答:
①应用程序必须有main方法,这个方法是程序执行的入口。
小应用程序没有main方法。
②应用程序的主类不一定用public修饰;小应用程序的主类必须用public修饰。
3.Java程序是由什么组成的?
一个程序中必须要有public类吗?
Java源文件的命名规则是怎样的?
答:
①Java程序由类组成。
②应用程序可以没有public类;小应用程序一定有一个类是public类(主类)。
③应用程序:
如果只有一个类,源文件名与该类的类名相同,拓展名为.java;
有多个类时,如果有public类(最多一个),源文件名与public类的类
名相同,拓展名是.java;没有public类,源文件名与任何一个类的类名
相同即可,拓展名为.java。
小应用程序:
源文件名与主类的类名相同,拓展名是.java。
4.在运行小程序的HTML文件中可以使用codebase属性指定小程序的字节码所驻留的目录。
如果不使用
codebase属性,小程序的字节码文件必须和运行它的HTML文件在同一目录中。
编写一个小程序并将小程
序的字节码存放在某个目录中,比如C:
\5000;把运行该小程序的HTML文件(注意其中的codebase属性):
\5000>
存放在另一个目录中。
答:
以书中小应用程序为例进行说明:
①编写Java小应用程序源代码
importjava.applet.*;
importjava.awt.*;
publicclassBoyextendsApplet
{
publicvoidpaint(Graphicsg)
{
g.setColor(Color.red);
g.drawString("我一边喝着咖啡,一边学Java呢",5,30);
g.setColor(Color.blue);
g.drawString("我学得很认真",10,50);
}
}
②将上述代码命名为Boy.java并进行编译得到Boy.class字节码文件;将得到的字节码文件存放在
三车资料库——学习资源共享专家
C:
\5000文件夹下;
③编写小应用程序的HTML源文件:
\5000>
④将上述编写好的代码命名为Boy.html;并将此文件存放在C:
\5000文件夹以外的任意一个文件夹
中(如C:
\1000);
⑤运行Boy.html。
第2章标识符、关键字和数据类型
1.什么叫标识符?
标识符的规则是什么?
答:
①用来标识类名、变量名、、方法名、类型名、数组名、文件名的有效字符序列。
②由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符,而且关键字不能作为标
识符。
2.什么叫关键字?
请说出5个关键字。
答:
①Java语言中已经被赋予特定意义的一些单词。
②classbreakpublicreturnstaticextends等。
3.Java的基本数据类型都是什么?
答:
boolean(逻辑型)char(字符型)float、double(浮点型)byte、short、int、long(整型)。
4.下列哪些语句是错误的:
intx=8;
byteb=127;
b=x;
答:
b=x语句错误;原因是高级别的变量赋值给低级别的变量时,一定要用显式转换即b=(byte)x;。
5.下列程序的输出结果是什么?
publicclassE
{
publicstaticvoidmain(Stringargs[])
{
long[]a={1,2,3,4};
答:
234<468
我输出结果后不回车我输出结果后自动回车到下一行
x+y=666
234432=234432
8.编写一个Java应用程序,输出全部的希腊字母。
答:
publicclassXLWords
{
publicstaticvoidmain(Stringargs[])
{
for(inti=913;i<930;i++)
{
System.out.print((char)i+"");
}
for(intj=931;j<938;j++)
{
System.out.print((char)j+"");
}
for(intk=945;k<962;k++)
{
System.out.print((char)k+"");
}
for(intt=963;t<=969;t++)
{
三车资料库——学习资源共享专家
System.out.print((char)t+"");
}
}
}
第3章运算符、表达式和语句
1.下列程序的输出结果是什么?
publicclassE
{
publicstaticvoidmain(Stringargs[])
{
charx='你',y='e',z='吃';
if(x>'A')
{
y='爱';
z='情';
}
else
y='我';
z='她';
System.out.println(""+x+y+z);
}
}
答:
你爱她
2.下列程序的输出结果是什么?
publicclassE3
{
publicstaticvoidmain(Stringargs[])
{
charc='\0';
for(inti=1;i<=4;i++)
{
switch(i)
{
case1:
c='b';
System.out.print(c);
case2:
c='e';
System.out.print(c);
break;
case3:
c='p';
System.out.print(c);
default:
System.out.print("!
");
}
}
}
}
答:
beep!
!
3.编写应用程序,求1!
+2!
+…+10!
。
答:
classFact
{
publicstaticvoidmain(Stringargs[])
{
intfact,sum=0;
for(inti=1;i<=10;i++)
{
fact=1;
for(intj=1;j<=i;j++)
fact*=j;
sum+=fact;
}
System.out.println("1到10的阶乘之和是:
"+sum);
}
}
4.编写一个应用程序,求100以内的全部素数。
答:
classPrimes
{
publicstaticvoidmain(Stringargs[])
{
intw=1;
for(inti=2;i<=100;i++)
{
for(intj=2;j
{
w=i%j;
if(w==0)
break;
}
if(w!
=0)
System.out.println(i+"是素数");
}
}
}
5.分别用do―while和for循环计算1+1/2!
+1/3!
+1/4!
+…的前20项和。
答:
①for循环
classSum
}
}
}
答:
beep!
!
3.编写应用程序,求1!
+2!
+…+10!
。
答:
classFact
{
publicstaticvoidmain(Stringargs[])
{
intfact,sum=0;
for(inti=1;i<=10;i++)
{
fact=1;
for(intj=1;j<=i;j++)
fact*=j;
sum+=fact;
}
System.out.println("1到10的阶乘之和是:
"+sum);
}
}
4.编写一个应用程序,求100以内的全部素数。
答:
classPrimes
{
publicstaticvoidmain(Stringargs[])
{
intw=1;
for(inti=2;i<=100;i++)
{
for(intj=2;j
{
w=i%j;
if(w==0)
break;
}
if(w!
=0)
System.out.println(i+"是素数");
}
}
}
5.分别用do―while和for循环计算1+1/2!
+1/3!
+1/4!
+…的前20项和。
答:
①for循环
classSum
sum=0;
for(i=1;i{
if(x%i==0)
sum+=i;
}
if(x==sum)
System.out.println(x+"是完数");
}
}
}
7.编写应用程序,分别使用while和for循环计算8+88+888+…前10项之和。
答:
①for循环
classTheSum
{
publicstaticvoidmain(Stringargs[])
{
longsum=0,data=8;
for(inti=1;i<=10;i++)
{
sum=sum+data;
data=data*10+8;
}
System.out.println(sum);
}
}
②while循环
classTheSum
{
publicstaticvoidmain(Stringargs[])
{
longsum=0,data=8,i=0;
while(++i<=10)
{
sum=sum+data;
data=data*10+8;
}
System.out.println(sum);
}
}
8.编写应用程序,输出满足1+2+3+…+n<8888的最大正整数n。
答:
classMaxn
{
publicstaticvoidmain(Stringargs[])
{
intk=1,sum=0;
while((sum+=k)<8888)
k++;
k--;
System.out.println("最大能取到:
"+k);
}
}
第4章类、对象和接口
1.类中的实例变量在什么时候会被分配内存空间?
答:
当该类创建对象之后,实例变量才会被分配相应的内存空间。
2.什么叫方法的重载?
构造方法可以重载吗?