一. 填空题(共17题,70.6分)
1. (填空题)
面向对象语言的三个特性是_____,_____,_____。
(1) 封装(2) 继承
(3) 多态
2. (填空题)
当类名由几个单词复合而成时,每个单词的首字母使用______。
(1) 大写
3. (填空题)
变量和方法的名字的首单词的首字母使用______,如果变量的名字由多个单词组成,从第2个单词开始的其它单词的首字母使用______。
(1) 小写(2) 大写
4. (填空题)
类体内容中声明成员变量是为了体现对象的属性还是行为?回答_______
(1) 属性
5. (填空题)
类体内容中定义的非构造方法是为了体现对象的属性还是行为?回答______
(1) 行为
6. (填空题)
构造方法是在用类创建对象时调用,构造方法有类型吗?回答有或者没有_______
(1) 没有
7. (填空题)
方法的重载是一个类中可以有多个方法具有相同的名字,但这些方法的____必须不同,即或者是参数的______不同,或者是参数的类型不同。
(1) 参数
(2) 个数
8. (填空题)
构造方法可以重载吗?回答可以或者不可以_______.
(1) 可以
9. (填空题)
类中的实例方法可以操作类变量(static变量)吗?回答可以或者不可以_______.类方法(static方法)可以操作实例变量吗?回答可以或者不可以_______.
(1) 可以
(2) 不可以
10. (填空题)
类中的实例方法可以用类名直接调用吗?回答可以或者不可以_______.
(1) 不可以
11. (填空题)
一个类通过使用new运算符可以创建多个不同的对象,不同的对象的_____变量将被分配不同的内存空间。所有对象的类变量都分配给相同的一处内存,对象共享类变量。
(1) 实例
12. (填空题)
this关键字代表调用当前方法的对象,this可以出现在类方法中吗?回答可以或者不可以_______.
(1) 不可以
13. (填空题)
下列E类中【代码1】~【代码3】的输出结果分别是______,______,______。
class Fish {
int 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);
lake.foodFish(120);
System.out.println(redFish.weight); //【代码2】
System.out.println(lake.fish.weight); //【代码3】
}
}
(1) 1(2) 121
(3) 121
14. (填空题)
A类中System.out.println的输出结果是_____________。
class B {
int x = 100,y = 200;
public void setX(int x) {
x = x;
}
public void setY(int y) {
this.y = y;
}
public int getXYSum() {
return x+y;
}
}
public class A {
public static void main(String args[]) {
B b = new B();
b.setX(-100);
b.setY(-200);
System.out.println("sum="+b.getXYSum());
}
}
(1) sum=-100
15. (填空题)
A类中System.out.println的输出结果是_________。
class B {
int n;
static int sum=0;
void setN(int n) {
this.n=n;
}
int getSum() {
for(int i=1;i<=n;i++)
sum=sum+i;
return sum;
}
}
public class A {
public static void main(String args[]) {
B b1=new B(),b2=new B();
b1.setN(3);
b2.setN(5);
int s1=b1.getSum();
int s2=b2.getSum();
System.out.println(s1+s2);
}
}
(1) 27
16. (填空题)
E类中【代码1】,【代码2】的输出结果分别是_______,_________。
class A {
double f(int x,double y) {
return x+y;
}
int f(int x,int y) {
return x*y;
}
}
public class E {
public static void main(String args[]) {
A a=new A();
System.out.println(a.f(10,10)); //【代码1】
System.out.println(a.f(10,10.0)); //【代码2】
}
}
(1) 100(2) 20.0
17. (填空题)
E类中【代码1】,【代码2】,【代码3】的输出结果分别是______,______,______。
public class E {public static void main(String args[]) {
f(1,2);//【代码1】
f(-1,-2,-3,-4); //【代码2】
f(9,7,6) ;//【代码3】
}
public static void f(int ... x){ //x是可变参数的代表,代表若干个int型参数
int sum=0;
for(int i=0;i<x.length;i++) { //x.length是x代表的参数的个数
sum+=x[i];//x[i]是x代表的第i个参数(类似数组)
}
System.out.println(sum);
}
}
(1) 3(2) -10
(3) 22
2. (其它)求序列前 n 项和(2/1+3/2+5/3+8/5+...)。输入一个正整数 n,输出 2/1+3/2+5/3+8/5 +… 的前 n 项之和,保留 2 位小数。该序列从第 2 项起,每一项的分子是前一项分子与分母的 和,分母是前一项的分子。试编写相应程序。
package e;
import java.util.Scanner;public class e {
public static void main(String[] args){
System.out.println("请输入一个正整数n:");
Scanner a=new Scanner(System.in);
int n=a.nextInt();
int i=0,j=0;
float sum=0,a1=1,a2=1,a3=0;
for(i=0;i<n;i++) {
a3=a1+a2;
a1=a2;
a2=a3;
sum+=a3/a1;
}
System.out.println("前n项和为:");
System.out.println(String.format("%.2f", sum));
}
}
(1) 3
(2) -10
(3) 22
二. 单选题(共5题,21分)
18. (单选题)
下列哪个叙述是正确的?
- A. Java应用程序由若干个类所构成,这些类必须在一个源文件中。<br>
- B. Java应用程序由若干个类所构成,这些类可以在一个源文件中,也可以分布在若干个源文件中,其中必须有一个源文件含有主类。<br>
- C. Java源文件必须含有主类。
- D. Java源文件如果含有主类,主类必须是public类。<br>
B :Java应用程序由若干个类所构成,这些类可以在一个源文件中,也可以分布在若干个源文件中,其中必须有一个源文件含有主类。<br>;
19. (单选题)
下列哪个叙述是正确的?
- A. 成员变量的名字不可以和局部变量的相同。<br>
- B. 方法的参数的名字可以和方法中声明的局部变量的名字相同。
- C. 成员变量没有默认值。
- D. 局部变量没有默认值。
D :局部变量没有默认值。;
20. (单选题)
对于下列Hello类,哪个叙述是正确的?
class Hello {
Hello(int m){
}
int Hello() {
return 20;
}
hello() {
}
}
- A. Hello类有2个构造方法。
- B. Hello类的int Hello()方法是错误的方法。
- C. Hello类没有构造方法。
- D. Hello无法通过编译,因为其中的hello方法的方法头是错误的(没有类型)。
D :Hello无法通过编译,因为其中的hello方法的方法头是错误的(没有类型)。;
21. (单选题)
对于下列Dog类,哪个叙述是错误的?
class Dog {
Dog(int m){
}
Dog(double m){
}
int Dog(int m){
return 23;
}
void Dog(double m){
}
}
- A. Dog(int m)与Dog(double m)互为重载的构造方法。
- B. int Dog(int m)与void Dog(double m)互为重载的非构造方法。
- C. Dog类只有两个构造方法,而且没有无参数的构造方法。
- D. Dog类有3个构造方法。
D :Dog类有3个构造方法。;
22. (单选题)
下列E类的类体中哪些【代码】是错误的。
class E {
int x; //【代码1】
long y = x; //【代码2】
public void f(int n) {
int m; //【代码3】
int t = n+m; //【代码4】
}
}
- A. 【代码1】
- B. 【代码2】
- C. 【代码3】
- D. 【代码4】
D :【代码4】;
三. 多选题(共2题,8.4分)
23. (多选题)下列哪些类声明是错误的?
- A. class A
- B. public class A
- C. protected class A
- D. private class A
CD : protected class A; private class A;
24. (多选题)
下列A类中【代码1】~【代码5】哪些是错误的?
class Tom {
private int x = 120;
protected int y = 20;
int z = 11;
private void f() {
x = 200;
System.out.println(x);
}
void g() {
x = 200;
System.out.println(x);
}
}
public class A {
public static void main(String args[]) {
Tom tom = new Tom();
tom.x = 22; //【代码1】
tom.y = 33; //【代码2】
tom.z = 55; //【代码3】
tom.f(); //【代码4】
tom.g(); //【代码5】
}
}
- A. 【代码1】
- B. 【代码2】
- C. 【代码3】
- D. 【代码4】
- E. 【代码5】
AD