Java2实用教程第5版习题解答.docx
- 文档编号:3948646
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:64
- 大小:402.46KB
Java2实用教程第5版习题解答.docx
《Java2实用教程第5版习题解答.docx》由会员分享,可在线阅读,更多相关《Java2实用教程第5版习题解答.docx(64页珍藏版)》请在冰豆网上搜索。
Java2实用教程第5版习题解答
setclasspath=D:
\jdk\jre\lib\rt.jar;.;
java禾nclass
javaBird
独行风格(大括号独占行)和行尾风格(左大扩号在上一行行尾,右大括号独占行)
习题解答
习题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.源文件由若干个类所构成。
对于应用程序,必须有一个类含有publicstaticvoid
main(Stringargs[])的方法,含有该方法的类称为应用程序的主类。
不一定,但至多有一个public类。
4.
5.
6.
7.
1.
A
B)
C)
D)
2.
A)
下列哪个是JDK提供的编译器?
java.exe
javac.exe
javap.exe
javaw.exe
下列哪个是Java应用程序主类中正确的main方法?
Publicvoidmain(Stringargs[])
B)
C)
D)
staticvoidmain(Stringargs[])publicstaticvoidMain(Stringargs[])publicstaticvoidmain(Stringargs[])
三、阅读程序阅读下列Java源文件,并回答问题。
PublicclassPerson{
voidspeakHelloO{
System.out.print("您好,很高兴认识您”);
System.out.printin(”nicetomeetyou");
}
}
classXiti{
publicstaticvoidmain(Stringargs[]){
Personzhang=newPerson。
;
zhang.speakHello();
}
}
(a)上述源文件的名字是什么?
(b)编译上述源文件将生成几个字节码文件?
这些字节码文件的名字都是什么?
(C)在命令行执行javaPerson得到怎样的错误提示?
执行javaxiti得到怎样的错误提示?
执行javaXiti.class得到怎样的错误提示?
执行javaXiti得到怎样的输出结果?
1.(a)Person.java。
(b)两个字节码,分别是Person.class和Xiti.class。
(c)得到
“NoSuchMethodError”,得到"NoClassDefFoundError:
Xiti/class”,得到"您好,很高兴认识您nicetomeetyou”
习题2(第2章)
1.用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。
标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。
false不是标识符。
2.关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来
用。
true禾nfalse不是关键字。
6个关键字:
classimpiementsinterfaceenumextendsabstract。
3.boolean,char,byte,short,int,long,float,double。
4.float常量必须用F或f为后缀。
double常量用D或d为后缀,但允许省略后缀。
5.一维数组名.length。
二维数组名.length。
二、选择题
2.下列哪三项是正确的float变量的声明?
A.floatfoo=-1;
B.floatfoo=1.0;
C.floatfoo=42e1;
D.floatfoo=2.02f;
E.floatfoo=3.03d;
F.floatfoo=0x0123;
3.下列哪一项叙述是正确的?
A.char
adf
B.char
C.char
D.char
型字符在型字符在型字符在型字符在
Unicode
Unicode
Unicode
Unicode
b
表中的位置范围是表中的位置范围是表中的位置范围是表中的位置范围是
0至32767
0至65535
0至65536
-32768至32767
4.以下哪两项是正确的char型变量的声明?
A.charch="R";
B.charch='\\'
C.charch='ABCD';
D.charch="ABCD";
E.charch='\ucafe';
F.charch='\u10100'
5•下列程序中哪些【代码1是错误的?
PublicclassE{
publicstaticvoidmain(Stringargs[]){
intx=8;
byteb=127;//
b=x;//x=12L;//
longy=8.0;//
floatz=6.89;//
}}6.对于inta[]=newint[3];
A.a.length的值是3。
B.a[1]的值是1。
C.a[0]的值是0。
2345
【代码1】
【代码21
【代码31
【代码41
【代码51
be
下列哪个叙述是错误的?
b
D.a[a」ength-1]的值等于a[2]的值。
1.C。
2.ADF。
3.B。
4.BE。
5.【代码2】【代码31【代码41【代码5】。
6.B。
三、阅读或调试程序
1.属于操作题,解答略。
2.属于操作题,解答略。
3.属于操作题,解答略。
4.下列程序标注的【代码1】,【代码2】的输出结果是什么?
PublicclassE{
publicstaticvoidmain(Stringargs[]){
Iong[]a={1,2,3,4};
Iong[]b={100,200,300,400,500};
b=a;
System.out.printin(”数组b的长度:
"+b.length);//【代码1】
System.out.printin("b[0]="+b[0]);//【代码2】
}
}
5.下列程序标注的【代码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];
System.out.println(b[0][3]);//【代码1】
System.out.println(a[1]);//【代码2】
}
4.
5.
}
【代码11:
4。
【代码2】:
b[0]=1。
【代码11:
40。
【代码21:
7
四、编写程序
1•编写一个应用程序,给出汉字‘你’、‘我’、’他’在Unicode表中的位置。
2•编写一个Java应用程序,输出全部的希腊字母。
1.PublicclassE{
publicstaticvoidmain(Stringargs[]){
System.out.println((int)'你');
System.out.println((int)'我');
System.out.println((int)'他');
}
2.PublicclassE{
publicstaticvoidmain(Stringargs[]){charcStart='a',cEnd='w';
for(charc=cStart;cv=cEnd;c++)System.out.print(""+c);
习题3
(第3章)
1.
2.
3.
4.
5.
6.
1.
2.
3.
4.
5.
6.
问答题
关系运算符的运算结果是怎样的数据类型?
if语句中的条件表达式的值是否可以是int型?
while语句中的条件表达式的值是什么类型?
switch语句中必须有default选项码?
在while语句的循环体中,执行break语句的效果是什么?
可以用for语句代替while语句的作用吗?
boolean
不可以
boolean
不是必须的
结束while语句的执行
可以
二、选择题
1.
下列哪个叙述是正确的?
a
A.
5.0/2+10的结果是double型数据。
(int)5.8+1.0的结果是int型数据。
C.'苹'+'果'的结果是char型数据。
(short)10+'a'的结果是short型数据。
2.
用下列哪个代码替换程序标注的【代码】会导致编译错误?
m-->0B.m++>0C.m=0D.m>100&&true
publicclassE{
publicstaticvoidmain(Stringargs[]){
intm=10,n=0;
while(【代码】){
n++;
“可能损失精度,找到int需要char”这样的编译错
3.假设有intx=1;以下哪个代码导致误。
c
A.shortt=12+'a';B.charc='a'+1;
C.charm='a'+x;D.byten='a'+1;
1.A。
2.Co3.C。
三、阅读程序
1.下列程序的输出结果是什么?
PublicclassE{publicstaticvoidmain(Stringargs[])
charx='你',y='e',z='吃';
if(x>'A'){
y='苹';
z='果';
else
y='酸';
乙=甜';
System.out.printin(x+","+y+","+z);
2.下列程序的输出结果是什么?
PublicclassE{
publicstaticvoidmain(Stringargs[]){
charc='\0';
for(inti=1;i<=4;i++){
switch(i){
System.out.print(c);
System.out.print(c);
break;
System.out.print(c);
default:
System.out.print("好");
3.下列程序的输出结果是什么?
PublicclassE{
publicstaticvoidmain(String[]args){
intx=1,y=6;
while(y-->0){
System.out.print("x="+x+",y="+y);
x=0,y=5
x=-1,y=4
x=-2,y=3
x=-3,y=2x=-4,y=1x=-5,y=0
x=-5,y=-1
1•你,苹,甜
2.Jeep好好
3.x=-5,y=-1
四、编程序题
编写应用程序求1!
+2!
+…+10!
。
编写一个应用程序求100以内的全部素数。
分别用do-while和for循环计算1+1/2!
+1/3!
+1/4!
的前20项和。
一个数如果恰好等于它的因子之和,这个数就称为“完数”。
编写应用程序求1000之
1.
2.
3.
4.
内的所有完数。
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;
}
System.out.println("sum="+sum);
}
}
2.publicclassXiti2{
publicstaticvoidmain(Stringargs[]){
inti,j;
for(j=2;j<=100;j++){
for(i=2;i<=j/2;i++){
3.
4.
if(j%i==0)break;
if(i>j/2){
System.out.print(""+j);
}
}
}
}
classXiti3{
publicstaticvoidmain(Stringargs[]){
doublesum=0,a=1,i=1;
do{sum=sum+a;
i++;
a=(1.0/i)*a;
}
while(i<=20);
System.out.printing使用do-while循环计算的sum="+sum);for(sum=0,i=1,a=1;i<=20;i++){
a=a*(1.0/i);sum=sum+a;
}
System.out.printing使用for循环计算的sum="+sum);
}
}
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)
System.out.println("完数:
"+i);
}
}
}
publicclassXiti5{
publicstaticvoidmain(Stringargs[]){intm=8,item=m,i=1;
longsum=0;
for(i=1,sum=0,item=m;i<=10;i++){sum=sum+item;
}
System.out.pnntln(sum);
}
}
6.publicclassXiti6{
publicstaticvoidmain(Stringargs[]){
intn=1;
longsum=0;
while(true){sum=sum+n;n++;
if(sum>=8888)
break;
}
System.out.printing满足条件的最大整数:
"+(n-1));
问答题
1•面向对象语言有哪三个特性?
2•类名应当遵守怎样的编程风格?
3•变量和方法的名字应当遵守怎样的编程风格?
4.类体内容中声明成员变量是为了体现对象的属性还是行为?
5.类体内容中定义的非构造方法是为了体现对象的属性还是行为?
6.什么时候使用构造方法?
构造方法有类型吗?
7•类中的实例变量在什么时候会被分配内存空间?
&什么叫方法的重载?
构造方法可以重载吗?
9.类中的实例方法可以操作类变量(static变量)吗?
类方法(static方法)可以操作实例变量吗?
可以。
不可以。
10.类中的实例方法可以用类名直接调用吗?
&一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。
可以。
9.
10.不可以。
11.简述类变量和实例变量的区别。
1.封装、继承和多态。
2.当类名由几个单词复合而成时,每个单词的首字母使用大写。
3.
2个单词开
名字的首单词的首字母使用小写,如果变量的名字由多个单词组成,从第始的其它单词的首字母使用大写。
4.属性
5.行为
6.用类创建对象时。
没有类型
7.用类创建对象时。
&一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。
可以。
9.可以。
不可以。
10.不可以。
11.一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间。
所有对象的类变量都分配给相同的一处内存,对象共享类变量。
12.代表调用当前方法的对象。
不可以。
二、选择题
Hello(intm){
}
intHello(){
}
hello(){
}
}
4.对于下列Dog类,哪个叙述是错误的?
d
Dog(intm)与Dog(doublem)互为重载的构造方法。
intDog(intm)与voidDog(doublem)互为重载的非构造方法。
Dog类只有两个构造方法,而且没有无参数的构造方法。
Dog类有3个构造方法。
A.
B.
C.
D.
classDog{
Dog(intm){
}
Dog(doublem){
}
intDog(intm){
return23;
}
voidDog(doublem){
}
}
构造方法是一种特殊的方法,与一般的方法不同是:
1.构造方法的名字必须与定义他的类名完全相同,没有
有。
2.构造方法的调用是在创建一个对象时使用化对象。
返回类型,甚至连void也没
new操作进行的。
构造方法的作用是初始
3.不能被static、final、synchronized、abstract禾Dnative修饰。
构造方法不能被
子类继承。
5.下列哪些类声明是错误的?
cd
A)
B)
C)
D)
classA
publicclassAprotectedclassAprivateclassA
6.下列
A类中【代码1】-【代码5】哪些是错误的?
14
classTom{
privateintx=120;
protectedinty=20;
intz=11;
privatevoidf(){
x=200;
System.out.println(x);
}
voidg(){
x=200;
System.out.println(x);
}
}publicclassA{
publicstaticvoidmain(Stringargs[]){
Tomtom=
newTom();
tom.x=22;
//【代码
1】
tom.y=33;
//【代码
2】
tom.z=55;
//【代码
3】
tom.f();
//【代码4】
tom.g();
//【代码5】
7.下列E类的类体中哪些【代码】是错误的。
classE{
intx;
longy=x;
publicvoidf(intn){intm;intt=n+m;
//【代码1】
//【代码2】
//【代码
//【代码
3】
4】
1.B。
2.
D。
3.D。
4.
D。
5.
CD。
6.【代码1】【代码4】。
7.【代码4】。
三、阅读程序
1•说出下列E类中【代码1】-【代码3】的输出结果。
classFish{
intweight=1;
}
classLake{
Fishfish;
voidsetFish(Fishs){
fish=s;
}
voidfoodFish(intm){fish.weight=fish.weight+m;
}
}
publicclassE{
代码1】
代码2】
【代码3】
publicstaticvoidmain(Stringargs[]){FishredFish=newFish();System.out.println(redFish.weight);//Lakelake=newLake();lake.setFish(redFish);lake.foodFish(120);
System.out.println(redFish.weight);//System.out.println(lake.fish.weight);//
}
}
2.请说出A类中System.out.println的输出结果。
classB{
intx=100,y=200;publicvoidsetX(intx){
x=x;
}
publicvoidsetY(inty){this.y=y;
}
publicintgetXYSum(){returnx+y;
}
}
publicclassA{
publicstaticvoidmain(Stringargs[]){
Bb=newB();
b.setX(-100);
b.setY(-200);
System.out.println("sum="+b.getXYSum());
}}3.请说出A类中System.out.println的输出结果。
classB{intn;
staticintsum=0;
voidsetN(intn){this.n=n;
}
intgetSum(){
for(inti=1;i<=n;i++)sum=sum+i;
returnsum;
}
}
publicclassA{
publicstaticvoidmain(Stringargs[]){
Bb1=newB(),b2=newB();
b1.setN(3);
b2.setN(5);
ints1=b1.getSum();
ints2=b2.getSum();
System.out.println(s1+s2);
}
}
4.请说出E类中【代码1】,【代码2】的输出结果n的输出结果。
classA{
doublef(intx,doubley){
returnx+y;
}
intf(intx,inty)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java2 实用教程 习题 解答