Java简明教程习题参考答案.docx
《Java简明教程习题参考答案.docx》由会员分享,可在线阅读,更多相关《Java简明教程习题参考答案.docx(74页珍藏版)》请在冰豆网上搜索。
Java简明教程习题参考答案
参考答案
第1章
1.Java语言有哪些主要特点。
平台独立性
安全性
多线程
网络化
面向对象
;
2.目前美国Sun公司提供的适用不同开发规模的JDK有哪些。
目前Sun共提供了三种不同的版本:
微平台版J2ME(Java2PlatformMicroEdition),标准版J2SE(Java2PlatformStandardEdition)和企业版J2EE(Java2PlatformEnterpriseEdition),这三种版本分别适用于不同的开发规模和类型,对于普通Java开发人员和一般学习者来说,选用标准版J2SE就可以了,学会了J2SE,再学J2ME或J2EE就比较容易上手,因为它们之间虽有所侧重,但相似之处很多,尤其是语言本身是一样的,都是Java。
3.JavaApplication的开发步骤有哪些。
JavaApplication的开发步骤:
(1)下载JDK软件并安装;
(2)配置相应的环境变量(path和classpath);
—
(3)编写Java源程序(文本编辑器或集成开发环境IDE);
(4)编译Java源程序,得到字节码文件(javac*.java);
(5)执行字节码文件(java字节码文件名)。
4.什么是环境变量,设置环境变量的主要目的是什么。
环境变量的配置主要是为了进行“寻径”,也即让程序能找到它需要的文件,所以设置的内容就是一些路径。
5.不参考书本,试着编写一个简单的JavaApplication程序,实现在Dos窗口输出“WelcometoNanjingCity!
”字符串。
并对该程序进行编译和运行。
\
publicclassHello{
publicstaticvoidmain(Stringargs[])
{
"WelcometoNanjingCity!
");
}
}
6.编写一个JavaApplication程序,实现分行显示字符串“WelcometoNanjingCity”中的四个单词。
\
publicclassHello{
publicstaticvoidmain(Stringargs[])
{
"Welcome");
"to");
"Nanjing");
"City!
");
}
`
}
第2章
1.Java语言对于合法标识符的规定是什么指出以下哪些为合法标识符。
aa23a*a_a$ainta%
在Java语言中,标识符必须以字母、美元符号或者下划线打头,后接字母、数字、下划线或美元符号串。
另外,Java语言对标识符的有效字符个数不做限定。
合法的标识符:
·
aa2_a$a
2.变量的涵义是什么变量名与变量值的关系
在程序执行过程中其值可以改变的数据,称为变量,它本质上代表了内存中的一小块空间。
每个变量都必须有对应的名称来标识它,即变量名,而变量空间所存放的数据则称为变量值。
3.Java语言提供哪些基本的数据类型,为什么要提供这些不同的数据类型
布尔型:
boolean
整型:
byte、short、int以及long
《
浮点型(实型):
float以及double
字符型:
char
数据类型代表了数据的存储格式和处理方式,虽然严格来说计算机只能识别“0”和“1”,但是,有了数据类型以后,计算机的识别能力就被人为扩展了,它能够识别整数、实数以及字符等。
4.赋值语句的涵义是什么
数据传递。
5.数据类型强制转换的原则是什么如何转换
"
对于变窄转换,如long到short、double到float,或者不兼容转换:
float到short、char到short等,则需要进行强制转换。
floatf=;
shortb;
b=(short)f;(强制转换)
6.每一条程序语句都应以分号来结束,这个分号能否用中文输入模式下输入的分号,为什么
不能。
首先中英文输入模式下输入的分号是不同的,不但外观不同,其存储所需的空间也是不同的,Java编译器只能识别英文的分号,对于中文分号,将会报错。
%
第3章
1.假定乘坐飞机时,每位顾客可以免费托运20kg以内的行李,超过部分按每公斤收费元,以下是相应的计算收费程序。
该程序存在错误,请找出。
publicclassTest
{
publicstaticvoidmain(String[]args)throwsIOException
{
floatw,fee;
;语句
)
2.有一条长的阶梯,如果每步2阶,则最后剩1阶,每步3阶则剩2阶,每步5阶则剩4阶,每步6阶则剩5阶,只有每步7阶的最后才刚好走完,一阶不剩,问这条阶梯最少共有多少阶找出以下求解程序的错误所在。
publicclassTest
{publicstaticvoidmain(String[]args)
{
inti;
while(i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0)
{
;
i++;
}
"这条阶梯最少有:
"+i+"阶");
}
}
1)变量i应进行初始化。
2)while循环的条件表达式应再加上“非”,这样才符合逻辑。
`
3.试用单分支结构设计一判断用户输入值X,当X大于零时求X值平方根,否则不执行任何操作的程序。
import.*;
import.*;
publicclassTest
{publicstaticvoidmain(String[]args)throwsIOException
{
<
floatx;
InputStreamReaderreader=newInputStreamReader;
BufferedReaderinput=newBufferedReader(reader);
"请输入x:
");
Stringtemp=();
x=(temp);;
publicclassTest
{publicstaticvoidmain(String[]args)throwsIOException
^
{
charA,B,c1,c2;
c1=(char)
c2=(char)
if(c1>c2)
{
A=c2;
B=c1;
"
}else
{
A=c1;
B=c2;
}
"A="+A+"B="+B);
}
}
:
5.用穷举法求出3位数中百、十、个位数的立方和就是该数的数。
publicclassTest
{publicstaticvoidmain(String[]args)
{
inta,b,c,x=100;
while(x<1000){
]
a=x%10;
b=(x%100-a)/10;
c=(x-x%100)/100;
if(a*a*a+b*b*b+c*c*c==x)
x+=1;
}
}
}
?
6.编程实现打印以下图案:
***********
*********
*******
*****
***
*
.
publicclassTest
{publicstaticvoidmain(String[]args)
{
inti,j,k;;
publicclassTest
{
publicstaticvoidmain(String[]args)throwsIOException
]
{
charsex='f';
switch(sex)
{
case'm':
"男性");
break;
case'f':
"女性");
case'u':
"未知");
*
}
}
}
女性
未知
10.读程序,写结果。
"
publicclassTest
{publicstaticvoidmain(String[]args)
{
inti,s=0;
for(i=1;i<=100;i++)
{
if(i%3==0)
continue;
<
s+=i;
}
"s="+s);
}
}
s=3367
)
11.读程序,写结果。
publicclassTest
{publicstaticvoidmain(String[]args)
{
inti,s=0;
for(i=1;i<=100;i++)
{
s+=i;
)
if(s>100)
break;
}
"s="+s);
}
}
s=105
)
12.个位数是6,且能被3整除的5位数有多少
publicclassTest
{publicstaticvoidmain(String[]args)
{
inti=10006,count=0;
while(i<)
|
{if(i%3==0)
count++;
i+=10;
}
"符合条件的数共有"+count+"个");
}
}
—
13.用嵌套循环结构,设计一模拟电子钟的程序。
提示:
定义三个变量分别代表“小时”、“分”和“秒”,根据电子钟分、秒、小时之间的关系,采用三重循环来控制各量的增加,并由输出语句将变化中的三个量分别予以输出显示,即为一模拟数字电子钟。
此外,Java语言提供的延时方法为(1000);1000的单位为毫秒,即延时1秒。
import.*;
publicclassTest
{publicstaticvoidmain(String[]args)throwsInterruptedException
{
inthour=12,min=0,sec=0;
)
while(hour<24)
{
while(min<60)
{
while(sec<60)
{sec++;
(1000);
"时-"+min+"分-"+sec+"秒");
&
}
sec=0;
min++;
}
min=0;
hour++;
}
}
\
}
第4章
1.以下叙述中不正确的是______。
A、在方法中,通过return语句传回方法值
B、在一个方法中,可以执行有多条return语句,并返回多个值
C、在Java中,主方法main()后的一对圆括号中也可以带有参数
D、在Java中,调用方法可以在语句中完成
[
B
2.以下正确的描述是______。
A、方法的定义不可以嵌套,但方法的调用可以嵌套
B、方法的定义可以嵌套,但方法的调用不可以嵌套
C、方法的定义和方法的调用均不可以嵌套
D、方法的定义和方法的调用均可以嵌套
A
3.以下正确的说法为______。
>
A、在不同方法中不可以使用相同名字的变量
B、实际参数可以在被调方法中直接使用
C、在方法内定义的任何变量只在本方法范围内有效
D、在方法内的复合语句中定义的变量只在本方法语句范围内有效
C
4.按Java语言的规定,以下正确的说法是______。
A、实参不可以是常量,变量或表达式
B、形参不可以是常量,变量或表达式
\
C、实参与其对应的形参占用同一个存储单元
D、形参是虚拟的,不占用存储单元
D
5.一个JavaApplication程序中有且只有一个方法,它是整个程序的执行入口。
main()方法
6.方法通常可以认为由两部分组成,它们是和。
方法头和方法体
"
7.读程序写结果。
publicclassTest{
staticvoidm(intx,inty,intz)
{x=111;y=222;z=333;
}
publicstaticvoidmain(Stringargs[])
{intx=100,y=200,z=300;
-
m(x,y,z);
}
}
x=100y=200z=300
8.编写一个判断某个整数是否为素数的方法。
publicbooleanprime(intx)
·
{
for(intj=2;jpublicclassTest
{publicstaticvoidmain(String[]args)
{inta=0;
"请输入数a:
");
try{
BufferedReaderbr=newBufferedReader(newInputStreamReader);
…
a=());
}catch(IOExceptione){}
intb=0;
"请输入数b:
");
try
{BufferedReaderbr=newBufferedReader(newInputStreamReader);
b=());
}catch(IOExceptione){}
…
if(a<=0||b<=0)
"输入不合法!
");
"最大公约数为:
"+Gys(a,b));
"最小公倍数为:
"+Gbs(a,b));
}
publicstaticintGys(inta,intb)
{
intr=0;
if(a
{r=a;
b=a;
a=r;}
inti=1;
while(i!
=0)
{i=a%b;
a=b;
(
b=i;
}
returna;
}
publicstaticintGbs(inta,intb)
{
intab=a*b;
intr=0;
?
if(a
{r=a;
b=a;
a=r;}
inti=1;
while(i!
=0)
{i=a%b;
a=b;
$
b=i;
}
returnab/a;
}
}
10.以下程序执行后的输出为。
publicclassTest
(
{
staticintm1(inta,intb)
{
intc;
a+=a;
b+=b;
c=m2(a,b);
return(c*c);
~
}
staticintm2(inta,intb)
{
intc;
c=a*b%3;
return(c);
}
publicstaticvoidmain(String[]args)
)
{
intx=1,y=3,z;
z=m1(x,y);
"z="+z);
}
}
z=0
:
11.编写一个方法,实现求某整数的各位数字之和的功能。
import.*;
publicclassTest
{publicstaticvoidmain(String[]args)
{inti,a=0,s=0;
"请输入数a:
");
try{
:
BufferedReaderbr=newBufferedReader(newInputStreamReader);
a=());
}catch(IOExceptione){}
for(i=10;a%i!
=a;i*=10)
{
s+=(a%i)/(i/10);
}
s+=a/(i/10);
:
"各位数之和为"+s);
}
}
12.编写完成十进制整数到八进制的转换方法。
import.*;
publicclassTest
{publicstaticvoidmain(String[]args)
》
{inti,k,a=0,d,s=0;
"请输入数:
");
try{
BufferedReaderbr=newBufferedReader(newInputStreamReader);
a=());
}catch(IOExceptione){}
d=a%8;
s+=d;
/
k=10;
for(i=64;a-d!
=0;i*=8)
{
s+=(a-d)%i*8/i*k;
k*=10;
d=a%i;
}
"八进制数为"+s);
#
}
}
13.用于指出数组中某个元素的数字被叫做;数组元素之所以相关,是因为它们具有相同的和。
下标;数组名和数据类型。
14.数组intresults[]=newint[6]所占存储空间是字节。
]
24
15.使用两个下标的数组被称为数组,假定有如下语句:
floatscores[][]={{1,2,3},{4,5},{6,7,8,9}};
则的值为:
,scores[1].length的值为:
,
scores[1][1]的值为:
。
二维;3;2;5。
,
16.从键盘上输入10个双精度浮点数后,求出这10个数的和以及它们的平均值。
要求分别编写相应求和及求平均值的方法。
import.*;
publicclassTest
{
publicstaticvoidmain(String[]args)throwsIOException
{
InputStreamReaderreader=newInputStreamReader;
!
BufferedReaderinput=newBufferedReader(reader);
Stringtemp;
doublex[]=newdouble[10];
for(inti=0;i<10;i++)
{
temp=();
x[i]=(temp);
}
!
S(x);
Avg(x);
}
publicstaticvoidS(doublex[])
{
;
publicclassScores
{
】
publicstaticvoidmain(String[]args)throwsIOException
{
intsum=0;;
publicclassTest
{
publicstaticvoidmain(String[]args)throwsIOException
{
charc[]={'O','l','y','m','p','i','c','','G','a','m','e','s'};
·
rever(c);
}
publicstaticvoidrever(charc[])
{
chart;
for(inti=0,j=;i{
<
t=c[i];
c[i]=c[j];
c[j]=t;
}
}
}
19.Java语言为什么要引入方法这种编程结构
)
提高复用度,减少程序代码量
促进程序结构化,提高可读性和可维护性
20.为什么要引入数组结构,数组有哪些特点,Java语言创建数组的方式有哪些
为了便于处理一批同类型的数据,Java语言引入了数组类型;
首先,数组中的每个元素都是相同数据类型的;其次,数组中的这些相同数据类型元素是通过数组下标来标识的,并且该下标是从0开始的;最后,数组元素在内存中的存放是连续的。
Java语言规定,创建数组可以有两种方式:
初始化方式和new操作符方式。
初始化方式是指直接给数组的每一个元素指定一个初始值,系统自动根据所给出的数据个数为数组分配相应的存储空间,通常这样创建数组的方式适用于数组元素较少的情形。
对于数组比较大的情形,即数组元素过多,用初始化方式显然不妥,这时应采用第二种方式,即new操作符方式。
`
第5章
1.实现类MyClass的源码如下:
classMyClassextendsObject{
privateintx;
privateinty;
publicMyClass(){
x=0;
y=0;
¥
}
publicMyClass(intx,inty){
.........
}
publicvoidshow(){
"\nx="+x+"y="+y);
}
publicvoidshow(booleanflag){
}
if(flag)"\nx="+x+"y="+y);
else"\ny="+y+"x="+x);
}
protectedvoidfinalize()throwsthrowable{
();
}
}
在以上的源代码中,类MyClass的成员变量是____;构造方法是____;对该类的一个实例对象进行释放时将调用的方法是____。
(多选)
(A)privateintx;
(B)privateinty;
(C)publicMyClass()
(D)publicMyClass(intx,inty)
(E)publicvoidshow()
(F)publicvoidshow(booleanflag)
(G)protectedvoidfinalize()throwsthrowable
答案:
ABCDG
}
2.上题所声明的类MyClass的构造方法MyClass(intx,inty)的目的是使MyClass的成员变量privateintx,privateinty的值分别等于方法参数表中所给的值intx,inty。
请写出MyClass(intx,inty)的方法体(用两条语句):
__________________________;
__________________________;
答案:
=x=y
3.MyClass声明同第一题。
设publicstaticvoidmain(Stringargs[])方法体如下:
!
{
MyClassmyclass;
();
}
编译运行该程序将会有何结果
(A)x=0y=0
(B)y=0x=0
(C)x=...y=...(x,y具体为何值是随机的)
/
(D)源程序有错
答案:
D
4.MyClass声明同第一题。
设publics