java实用教程第习题解答.docx
《java实用教程第习题解答.docx》由会员分享,可在线阅读,更多相关《java实用教程第习题解答.docx(61页珍藏版)》请在冰点文库上搜索。
java实用教程第习题解答
习题解答
习题1(第1章)
一、问答题
1.JamesGosling
2.需3个步骤:
1)用文本编辑器编写源文件。
2)使用javac编译源文件,得到字节码文件。
3)使用解释器运行程序。
3.源文件由若干个类所构成。
对于应用程序,必须有一个类含有publicstaticvoidmain(Stringargs[])的
方法,含有该方法的类称为应用程序的主类。
不一定,但至多有一个public类。
4.setclasspath=D:
\jdk\jre\lib\rt.jar;.;
5.java和class
6.javaBird
7.独行风格(大括号独占行)和行尾风格(左大扩号在上一行行尾,右大括号独占行)
二、选择题
1.B。
2.Do
三、阅读程序
1.(a)Person.java。
(b)两个字节码,分别是Person.class和Xiti.class。
(c)得到“NoSuchMethodError”得到“NoClassDefFoundError:
Xiti/class”,得到“您好,很高兴认识您nicetomeetyou”
习题2(第2章)
一、问答题
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。
二、选择题
1.C。
2.ADF。
3.B。
4.BE。
5.【代码2】【代码3】【代码4】【代码5】。
6.B。
三、阅读或调试程序
1.属于操作题,解答略。
2.属于操作题,解答略。
3.属于操作题,解答略。
4.【代码1】:
4。
【代码2】:
b[0]=1。
5.【代码1】:
40。
【代码2】:
7
四、编写程序
1.publicclassE{
publicstaticvoidmain(Stringargs[]){你');我');
}
}
2.publicclassE{
publicstaticvoidmain(Stringargs[]){charcStart='a',cEnd='3';
for(charc=cStart;c<=cEnd;c++)
}
}
习题3(第3章)
一、问答题
1.boolean
2.不可以
3.boolean
4.不是必须的
5.结束while语句的执行
6.可以
二、选择题
三、阅读程序
1.你,苹,甜
2.Jeep好好
3.x=-5,y=-1
四、编程序题
1.publicclassXiti1{
publicstaticvoidmain(Stringargs[]){doublesum=0,a=1;
inti=1;
while(i<=20){sum=sum+a;i++;
a=a*i;
}
}
}
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){
}
}
}
}
3.classXiti3{
publicstaticvoidmain(Stringargs[]){doublesum=0,a=1,i=1;do{sum=sum+a;
i++;
a=(1.0/i)*a;
}
while(i<=20);for(sum=0,i=1,a=1;i<=20;i++){a=a*(1.0/i);
sum=sum+a;
}
}
}
4.publicclassXiti4{
publicstaticvoidmain(Stringargs[]){intsum=0,i,j;for(i=1;i<=1000;i++){for(j=1,sum=0;j
}
if(sum==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;
}
}
}
习题4(第4章)
一、问答题
1.封装、继承和多态。
2.当类名由几个单词复合而成时,每个单词的首字母使用大写。
3.名字的首单词的首字母使用小写,如果变量的名字由多个单词组成,从第2个单词开始的其它单词
的首字母使用大写。
4.属性
5.行为
6.用类创建对象时。
没有类型
7.用类创建对象时。
8.一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。
可以。
9.可以。
不可以。
10.不可以。
11.一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间。
所有对象的类变量都分配给相同的一处内存,对象共享类变量。
12.代表调用当前方法的对象。
不可以。
二、选择题
1.Bo2.Do3.D4.Do5.CD6.【代码1】【代码4】。
7.【代码4】。
三、阅读程序
1.【代码1】:
1,【代码2】:
121,【代码3】:
121o
2.
sum=-100o
3.
27o
4.
【代码1】:
100,【代码2】
:
20.0o
5.
上机实习题目,
解答略。
6.
上机实习题目,
解答略。
四、编程题
CPU.javapublicclassCPU{intspeed;intgetSpeed(){returnspeed;
}
publicvoidsetSpeed(intspeed){this.speed=speed;
}
HardDisk.java
publicclassHardDisk{
intamount;
intgetAmount(){
returnamount;
}
publicvoidsetAmount(intamount){
this.amount=amount;
}
}
PC.java
publicclassPC{
CPUcpu;
HardDiskHD;
voidsetCPU(CPUcpu){
this.cpu=cpu;
}
voidsetHardDisk(HardDiskHD){
this.HD=HD;
}
voidshow(){
}
}
Test.java
publicclassTest{
publicstaticvoidmain(Stringargs[]){
CPUcpu=newCPU();
HardDiskHD=newHardDisk();
cpu.setSpeed(2200);
HD.setAmount(200);
PCpc=newPC();
pc.setCPU(cpu);
pc.setHardDisk(HD);
pc.show();
}
}
习题5(第5章)
一、问答题
1.不可以。
2.是。
3.不继承。
4.声明与父类同名的成员变量。
5.子类重写的方法类型和父类的方法的类型一致或者是父类的方法的类型的子类型,重写的方法的名字、参数个数、参数的类型和父类的方法完全相同。
重写方法的目的是隐藏继承的方法,子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。
6.不可以。
7.abstract类。
8.上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。
上转型对象可以访问子类继承或隐藏的成员变量,可以调用子类继承的方法或子类重写的实例方法。
9.通过重写方法。
10.面向抽象编程目的是为了应对用户需求的变化,核心是让类中每种可能的变化对应地交给抽象类的一个子类类去负责,从而让该类的设计者不去关心具体实现。
二、选择题
1.Co2.Do3.CDo4.D。
5.B。
6.B。
7.D。
8.B。
9.A。
三、阅读程序
1.【代码1】:
15.0o【代码2】:
8.0o
2.【代码1】:
11o【代码2】:
11o
3.【代码1】:
98.0。
【代码2】:
12o【代码3】:
98.0。
【代码4】:
9。
4.【代码1】:
120。
【代码2】:
120。
【代码3】:
-100。
四、编程题
Animal.java
publicabstractclassAnimal{
publicabstractvoidcry();
publicabstractStringgetAnimalName();
}
Simulator.java
publicclassSimulator{
publicvoidplaySound(Animalanimal){animal.cry();
}
}
Dog.java
publicclassDogextendsAnimal{
publicvoidcry(){
}
publicStringgetAnimalName(){
return"狗";
}
}
Cat.java
publicclassCatextendsAnimal{
publicvoidcry(){
}
publicStringgetAnimalName(){
return"猫";
Application.java
publicclassExample5_13{
publicstaticvoidmain(Stringargs[]){
Simulatorsimulator=newSimulator();
simulator.playSound(newDog());
simulator.playSound(newCat());
}
}
习题6(第6章)
一、问答题
1.不能。
2.不能。
3.可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。
那么该接口变量就可以调用被类实现的接口中的方法。
4.不可以。
5.可以。
二、选择题
1.D。
2.AB。
3.B。
三、阅读程序
1.【代码1】:
15.0。
【代码2】:
8。
2.【代码1】:
18。
【代码2】:
15。
四、编程题
Animal.java
publicinterfaceAnimal{
publicabstractvoidcry();
publicabstractStringgetAnimalName();
}
Simulator.java
publicclassSimulator{
publicvoidplaySound(Animalanimal){
animal.cry();
}
}
Dog.java
publicclassDogimplementsAnimal{
publicvoidcry(){
}
publicStringgetAnimalName(){
return"狗";
Cat.java
publicclassCatimplementsAnimal{
publicvoidcry(){
}
publicStringgetAnimalName(){
return"猫";
}
}
Application.java
publicclassExample5_13{
publicstaticvoidmain(Stringargs[]){
Simulatorsimulator=newSimulator();simulator.playSound(newDog());simulator.playSound(newCat());
}
}
习题7(第7章)
一、问答题
1.有效。
2.可以。
3.不可以。
4.一定是。
二、选择题
1.Co2.Co
三、阅读程序
1.大家好,祝工作顺利!
2.p是接口变量。
3.你好finethankso
4.属于上机实习程序,解答略。
四、编程题
importjava.util.*;
publicclassE{
publicstaticvoidmain(Stringargs[]){Scannerreader=newScanner(System.in);doublesum=0;
intm=0;while(reader.hasNextDouble()){doublex=reader.nextDouble();assertx<100:
"数据不合理";m=m+1;
sum=sum+x;
习题8(第8章)
一
、问答题
1.
不是。
"\\hello"是。
2.
4和3。
3.
false和true。
4.
负数。
5.
是true。
6.
3和-1。
7.
会发生NumberFormatException异常。
二、选择题
1.A。
2.C。
3.B。
4.D。
5.C。
三、阅读程序
1.【
代码】:
苹果。
2.【
代码】:
Love:
Game。
3.【
代码1】
:
15。
【代码2】:
abc我们。
4.【
代码】:
13579。
5.【
代码】:
9javaHello。
6.
属于上机实习程序,解答略。
7.
属于上机实习程序,解答略。
四、
编程题
1.
publicclassE{
publicstaticvoidmain(Stringargs[]){Strings1,s2,t1="ABCDabcd";s1=t1.toUpperCase();s2=t1.toLowerCase();
Strings3=s1.concat(s2);
}
}
2.publicclassE{
publicstaticvoidmain(Stringargs[]){
Strings="ABCDabcd";
charcStart=s.charAt(0);
charcEnd=s.charAt(s.length()-1);
}
}
3.importjava.util.*;
publicclassE{
publicstaticvoidmain(Stringargs[]){
intyear1,month1,day1,year2,month2,day2;try{year1=Integer.parseInt(args[0]);month1=Integer.parseInt(args[1]);day1=Integer.parseInt(args[2]);year2=Integer.parseInt(args[3]);month2=Integer.parseInt(args[4]);
day2=Integer.parseInt(args[5]);
}catch(NumberFormatExceptione)
{year1=2012;month1=0;day1=1;year2=2018;month2=0;day2=1;
}
Calendarcalendar=Calendar.getInstance();calendar.set(year1,month1-1,day1);
longtimeYear1=calendar.getTimeInMillis();calendar.set(year2,month2-1,day2);
longtimeYear2=calendar.getTimeInMillis();
long相隔天数=Math.abs((timeYear1-timeYear2)/(1000*60*60*24));
year2+"年"+month2+"月"+day2+"日相隔"+相隔天数+"天");}
}
4.importjava.util.*;publicclassE{publicstaticvoidmain(Stringargs[]){doublea=0,b=0,c=0;
a=12;
b=24;
c=Math.asin(0.56);
c=Math.cos(3.14);
c=Math.exp
(1);c=Math.log(8);
}
}
5.publicclassE{
publicstaticvoidmain(Stringargs[]){
Stringstr="ab123you你是谁?
";
Stringregex="\\D+";
str=str.replaceAll(regex,"");
}
}
6.importjava.util.*;
publicclassE{
publicstaticvoidmain(Stringargs[]){
Stringcost="数学87分,物理76分,英语96分";
Scannerscanner=newScanner(cost);
doublesum=0;
intcount=0;
while(scanner.hasNext()){
try{doublescore=scanner.nextDouble();
count++;
sum=sum+score;
catch(InputMismatchExceptionexp){
Stringt=scanner.next();
}
}
}
}
习题9(第9章)
一、问答题
1.Frame容器的默认布局是BorderLayout布局。
2.不可以。
3.ActionEvent。
4.DocumentEvent。
5.5个。
6.MouseMotionListener。
二、选择题
1.C。
2.A。
3.A。
4.D。
5.C。
三、编程题
1.importjava.awt.*;
importjavax.swing.*;
publicclassE{
publicstaticvoidmain(Stringargs[]){
Computerfr=newComputer();
}
}
classComputerextendsJFrameimplementsDocumentListener{
JTextAreatext1,text2;
intcount=1;
doublesum=0,aver=0;
Computer(){
setLayout(newFlowLayout());text1=newJTextArea(6,20);text2=newJTextArea(6,20);add(newJScrollPane(text1));add(newJScrollPane(text2));text2.setEditable(false);(text1.getDocument()).addDocumentListener(this);setSize(300,320);
setVisible(true);
validate();setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
publicvoidchangedUpdate(DocumentEvente){
Strings=text1.getText();
sum=0;
aver=0;
for(inti=0;itry{sum=sum+Double.parseDouble(a[i]);
}catch(Exceptionee){}
}aver=sum/count;text2.setText(null);text2.append("\n和:
"+sum);text2.append("\n平均值:
"+aver);
}
publicvoidremoveUpdate(DocumentEvente){changedUpdate(e);
}
publicvoidinsertUpdate(DocumentEvente){changedUpdate(e);
}
}
2.importjava.awt.*;importjavax.swing.*;publicclassE{publicstaticvoidmain(Stringargs[]){
ComputerFramefr=newComputerFrame();
}
}
classComputerFrameextendsJFrameimplementsActionListener{JTextFieldtext1,text2,text3;
JButtonbuttonAdd,buttonSub,buttonMul,buttonDiv;
JLabellabel;
publicComputerFrame(){setLayout(newFlowLayout());text1=newJTextField(10)