1. 如果将类 MyClass 声明为 public,它的文件名必须是 ( ) 才能正常编译。
解:① 如果一个类被声明为 public,则必须以 .java 作为文件拓展名。
答案:MyClass.java
2. 定义类头时能使用的修饰符是( )
A. private B. static
C. abstract D. protected
解:
① 普通外部类中可以使用的修饰符:public、abstract,不可以使用的修饰符:private、protected、static;
② private 表示仅自身可见,其他类根本无法引用它;protected 本意为 “自己和子类可用”,而非子类无法看到它;static 表示无主仆,属于类而非实例。
答案:C
3. 阅读下列源文件,并回答问题。
public class Person {void speakHello() {System.out.print("您好,很高兴认识您");System.out.println(" nice to meet you");}
}class Xiti {public static void main(String args[]) {Person zhang = new Person();zhang.speakHello();}
}
(a) 上述源文件的名字是( )
(b) 编译上述源文件将生成的字节码文件都是( )
解:核心:
① 源文件名规则判断:当源文件中包含 public class 时,文件名必须与该 public 类名完全一致(包括大小写),在后面加 .java
public class Person { ... } // 公有类
源文件必须为 Person.java
② 字节码文件生成规则:每个独立类生成一个 .class 文件,找到 class 的那段代码,字节码文件为: Person.class、Xiti.class
4. 下列哪个叙述是正确的?
A. 5.0 / 2 + 10 的结果 double 类数据
B. (int)5.8 + 1.0 的结果是 int 数据
C. ‘苹’ + ‘果’ 的结果是 char 型数据
D. (short)10 + 'a' 的结果是 short 类数据
解:
① 记忆口诀:小算必大,遇双则双。“小算必大”,遇到 short / char 这两个,运算结果必须是 int;遇到含 double 的运算,结果必是 double。
② 小数不加 f,必是 double。
过程:A项,5.0 是 double 类型,/2 后依然是 double 类型,故 A项 正确;B项,1.0 是 double 类型,遇到含 double 的运算,结果一定是 double,所以 B项 错误;C 项,char 类型会转化为 int 类型,故 C项 错误;D项,short 类型会自动转化为 int 类型,故 D项 错误。
答案:A
5. 下列的哪个赋值语句是不正确的?
A. float d = 3.14f
B. double d = 5.3E12
C. float f = 11.1
D. double f = 11.1E10f
解:
① double 是默认类型:在 Java 中,如果你直接在代码里写一个小数(比如3.14、11.1)或者用科学计数法表示但没有后缀(比如5.3E12),Java 编译器会默认它是一个 double 类型的数值。
② float 需要显示标记:float 类型能表示的小数范围和精度比 double 小。如果你想要告诉编译器某个小数是 float 类型,必须在数字后面加上后缀 f 或 F。
③ 大容器装小东西没问题,反过来不行:Java 允许将 float 值赋值给 double 变量,但是不允许将 double 值直接赋值给 float 变量。
过程:C项,11.1 默认视为 double 类型,而 float 类型是不能直接赋值给 double 的,故本题为 C项
答案:C
6. 说出下列 E类中 【代码1】-【代码2】的输出结果
class Fish{ int weight = 1; } // Fish类(初始weight=1)class Lake{ Fish fish; void setFish(Fish s){ fish = s; } // 设置鱼void foodFish(int m){ fish.weight = fish.weight + m; } // 喂鱼(增加重量)
}public class E {public static void main(String args[]) {Fish redFish = new Fish();System.out.println(redFish.weight); //【代码1】Lake lake = new Lake();lake.setFish(redFish); // 将redFish传入Lakelake.foodFish(120); // 喂鱼System.out.println(redFish.weight); //【代码2】}
}
解:将代码一行一行的进行分析:
① 第一段:
class Fish {int weight = 1; // 定义Fish类,所有Fish对象初始重量为1
}
② 第二段:
class Lake {Fish fish; // Lake类有一个"鱼槽"(fish变量),可以存放鱼的引用(初始为空)void setFish(Fish s) {fish = s; // 🔄 核心操作:把传入的鱼"遥控器"放进鱼槽(不是创建新鱼)}void foodFish(int m) {fish.weight = fish.weight + m; // 用鱼槽里的遥控器给鱼增重}
}
③ 第三段:
public class E {public static void main(String args[]) {// 🌟 第一步:创建红鱼对象Fish redFish = new Fish(); // 在内存中创建1条鱼(重量=1)// 这时【代码1】输出鱼的当前重量:System.out.println(redFish.weight); // 输出:1 → (1)1 ✅// 🌟 第二步:创建湖泊Lake lake = new Lake(); // 创建空湖泊(lake.fish为空)// 🔄 核心操作:把红鱼放进湖泊lake.setFish(redFish); // 相当于把红鱼的"遥控器副本"放进了lake.fish// 现在有两个引用指向同一条鱼:// redFish (你的遥控器)// lake.fish (湖泊的遥控器)// 🍖 第三步:通过湖泊喂鱼lake.foodFish(120); // 执行后:鱼.weight = 1 + 120 = 121// 此操作通过lake.fish这个遥控器修改了鱼的实际重量// 🌟 第四步:再次查看你的红鱼System.out.println(redFish.weight); //【代码2】// 输出:121 → (2)121 ✅// 因为你的redFish遥控器控制的还是同一条鱼}
}
答案:
1
121
7. 下列关于子类的继承的描述中,错误的是( )
A. 一个子类只允许一个父类
B. 一个父类只能生成一个子类
C. 继承不改变成员权限
D. 私有成员和构造方法不能继承
解:
① Java 是单继承语言,每个子类只能直接继承一个父类,但是一个父类可以有多个子类继承它。
② 子类无法直接访问父类的私有成员,子类也不会继承父类的构造方法。
答案:B
8. 完成实验 1:
实验1 一个简单的应用程序
一、实验目的
本实验的目的是让学生掌握开发Java应用程序的3个步骤:编写源文件、编译源文件和运行应用程序。
二、实验要求
编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,欢迎学习Java”和“We are students”。
三、程序效果示例
程序运行效果如图1.1所示。
图1.1 简单的应用程序
四、程序模板
请按模板要求,将【代码】替换为Java程序代码。
public class Hello {public static void main(String args[]) {[代码] // 命令行窗口输出“你好,欢迎学习Java”A a = new A();a.fA();}
}class A {void fA() {[代码] // 命令行窗口输出“We are students”}
}
解:
① 如果要使用两个 class 来运行,那么下面的 class A 要改成 public class A,之后运行 Hello.java 的 java.application
② 如果是写成 class A ,那么只用创建一个 class 即可。