习题解答
习题 1(第 1 章)
一、问答题
1.James Gosling
2.需 3 个步骤:
1) 用文本编辑器编写源文件。
2) 使用 javac 编译源文件,得到字节码文件。
3) 使用解释器运行程序。
java 和 class
java Bird
3 . 源 文 件 由 若 干 个 类 所 构 成 。 对 于 应 用 程 序 , 必 须 有 一 个 类 含 有 public static void
main(String args[])的方法,含有该方法的类称为应用程序的主类。不一定,但至多有一个
public 类。
4.set classpath=D:\jdk\jre\lib\rt.jar;.;
5.
6.
7. 独行风格(大括号独占行)和行尾风格(左大扩号在上一行行尾,右大括号独占行)
二、选择题
1.B。2.D。
三、阅读程序
1 .( a )Person.java 。( b ) 两 个 字 节 码 , 分 别 是 Person.class 和 Xiti.class 。( c ) 得 到
“NoSuchMethodError”,得到“NoClassDefFoundError: Xiti/class”,得到“您好,很高兴认
识您 nice to meet you”
习题 2(第 2 章)
一、问答题
1.用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。
标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。false 不是标识符。
2.关键字就是 Java 语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来
用。true 和 false 不是关键字。6 个关键字:class implements interface enum extends abstract。
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.
public class E {
public static void main(String args[]) {
System.out.println((int)'你');
System.out.println((int)'我');
System.out.println((int)'他');
}
}
public class E {
2.
public static void main (String args[ ]) {
char cStart='α',cEnd='ω';
for(char c=cStart;c<=cEnd;c++)
System.out.print(" "+c);
}
}
习题 3(第 3 章)
一、问答题
1.boolean
2.不可以
3.boolean
4. 不是必须的
5.结束 while 语句的执行
6.可以
二、选择题
1.A。 2.C。 3.C。
三、阅读程序
1.你,苹,甜
2.Jeep 好好
3.x=-5,y=-1
四、编程序题
1.public class Xiti1 {
public static void main(String args[]) {
double sum=0,a=1;
int i=1;
while(i<=20) {
sum=sum+a;
i++;
a=a*i;
}
System.out.println("sum="+sum);
}
}
2.public class Xiti2 {
public static void main(String args[]) {
int i,j;
for(j=2;j<=100;j++) {
for(i=2;i<=j/2;i++) {
if(j%i==0)
break;
}
if(i>j/2) {
System.out.print(" "+j);
}
}
}
}
3.class Xiti3 {
public static void main(String args[]) {
double sum=0,a=1,i=1;
do { sum=sum+a;
i++;
a=(1.0/i)*a;
}
while(i<=20);
System.out.println("使用 do-while 循环计算的 sum="+sum);
for(sum=0,i=1,a=1;i<=20;i++) {
a=a*(1.0/i);
sum=sum+a;
}
System.out.println("使用 for 循环计算的 sum="+sum);
}
}
4.public class Xiti4 {
public static void main(String args[]) {
int sum=0,i,j;
for(i=1;i<=1000;i++) {
for(j=1,sum=0;j=8888)
break;
}
System.out.println("满足条件的最大整数:"+(n-1));
}
}
习题 4(第 4 章)
一、问答题
1. 封装、继承和多态。
2.当类名由几个单词复合而成时,每个单词的首字母使用大写。
3.名字的首单词的首字母使用小写,如果变量的名字由多个单词组成,从第 2 个单词开
始的其它单词的首字母使用大写。
4.属性
5.行为
6.用类创建对象时。没有类型
7.用类创建对象时。
8.一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参
数的个数不同,或者是参数的类型不同。可以。
9.可以。不可以。
10.不可以。
11.一个类通过使用 new 运算符可以创建多个不同的对象,不同的对象的实例变量将被分
配不同的内存空间。所有对象的类变量都分配给相同的一处内存,对象共享类变量。
12.代表调用当前方法的对象。不可以。
二、选择题
1.B。2.D。3.D。4.D。5.CD。6.【代码 1】【代码 4】。7.【代码 4】。
三、阅读程序
1.【代码 1】:1,【代码 2】:121,【代码 3】:121。
2.sum=-100。
3. 27。
4.【代码 1】:100,【代码 2】:20.0。
5. 上机实习题目,解答略。
6. 上机实习题目,解答略。
四、编程题
CPU.java
public class CPU {
int speed;
int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
}
HardDisk.java
public class HardDisk {
int amount;
int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
PC.java
public class PC {
CPU cpu;
HardDisk HD;
void setCPU(CPU cpu) {
this.cpu = cpu;
}
void setHardDisk(HardDisk HD) {
this.HD = HD;
}
void show(){
System.out.println("CPU 速度:"+cpu.getSpeed());
System.out.println("硬盘容量:"+HD.getAmount());
}
}
Test.java
public class Test {
public static void main(String args[]) {
CPU cpu = new CPU();
HardDisk HD=new HardDisk();
cpu.setSpeed(2200);
HD.setAmount(200);
PC pc =new PC();
pc.setCPU(cpu);
pc.setHardDisk(HD);
pc.show();
}
}
习题 5(第 5 章)
一、问答题
1.不可以。
2.是。
3.不继承。
4.声明与父类同名的成员变量。
5.子类重写的方法类型和父类的方法的类型一致或者是父类的方法的类型的子类型,重
写的方法的名字、参数个数、参数的类型和父类的方法完全相同。重写方法的目的是隐藏
继承的方法,子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。
6.不可以。
7.abstract 类。
8.上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。上转型对象可
以访问子类继承或隐藏的成员变量,可以调用子类继承的方法或子类重写的实例方法。
9.通过重写方法。
10.面向抽象编程目的是为了应对用户需求的变化,核心是让类中每种可能的变化对应地
交给抽象类的一个子类类去负责,从而让该类的设计者不去关心具体实现。
二、选择题
1.C。2.D。3.CD。4.D。5.B。6.B。7.D。8.B。9.A。
三、阅读程序
1.【代码 1】:15.0。【代码 2】:8.0。
2.【代码 1】:11。【代码 2】:11。
3.【代码 1】:98.0。【代码 2】:12。【代码 3】:98.0。【代码 4】:9。
4.【代码 1】:120。【代码 2】:120。【代码 3】:-100。
四、编程题
Animal.java
public abstract class Animal {
public abstract void cry();
public abstract String getAnimalName();
}
Simulator.java
public class Simulator {
public void playSound(Animal animal) {
System.out.print("现在播放"+animal.getAnimalName()+"类的声音:");
animal.cry();
}
}
Dog.java
public class Dog extends Animal {
public void cry() {
System.out.println("汪汪...汪汪");
}
public String getAnimalName() {
return "狗";
}
}
Cat.java
public class Cat extends Animal {
public void cry() {
System.out.println("喵喵...喵喵");
}
public String getAnimalName() {
return "猫";
}
}
Application.java
public class Example5_13 {
public static void main(String args[]) {
Simulator simulator = new Simulator();
simulator.playSound(new Dog());
simulator.playSound(new Cat());
}
}
习题 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
public interface Animal {