未来工作室月末考核总结
2018级未来工作室第二次考核
一、 选择题(每道题3分,共30分)
1. 下列 javaDoc 注释正确的是(D )
A、 /* 我爱北京天安门 */
B、 //我爱北京天安门 */
C、 /** 我爱北京天安门 */
D、 /* 我爱北京天安门 **/
Java注释三种格式
单行注释 //
多行注释 /*
语句 */
文档注释 /** */
2. 在 Java语言中,下列关于类的继承的描述,正确的是(A )
A、 一个类可以继承多个父类
B、 一个类可以具有多个子类
C、 子类可以使用父类的所有方法
D、 子类一定比父类有更多的成员方法
JAVA语言不支持多重继承,一个类只能有一个直接父类。子类继承父类的成员变量和成员方法,同时可以修改父类的成员变量或重写父类的方法,还可以添加新的成员变量或成员方法。
3. 下面说法中错误的是(D )
A、 静态代码块类一加载只执行一次 , 以后再创建对象的时候不执行
B、 局部代码块的作用是为了限制变量的生命周期
C、 构造代码块在每创建一次对象就执行一次
D、 以上都不对
类初始化时,静态代码块类一加载只执行一次。Static{},普通代码块{}。局部变量(方法内的变量),成员变量(类中的变量)。构造器(有参,无参),如果不定义有参的构造器,系统默认有一个无参的构造器,如果定义了,则需要再次定义无参构造器。
4. 下列关于修饰符混用的说法,错误的是(D )
A、 abstract不能与final并列修饰同一个类
B、 abstract类中不可以有private的成员
C、 abstract方法必须在abstract类中
D、 static方法中能处理非static的属性
5. 我国最高山峰是珠穆朗玛峰,8848米。现在我有一张足够大的纸,它的厚度是0.001米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度为(B )
A、 20
B、 22
C、 24
D、 26
6. 分析选项中关于Java中this关键字的说法正确的是(D )
A、 this关键字是在对象内部指代自身的引用
B、 this关键字可以在类中的任何位置使用
C、 this关键字和类关联,而不是和特定的对象关联
D、 同一个类的不同对象共用一个this
在某一构造方法中调用另一构造方法时,必须使用this关键字调用,this关键字必须写在构造方法内的第一行位置
7. 下列关于字符串的描叙中错误的是(A )
A、 字符串是对象
B、 String 对象存储字符串的效率比 StringBuffer 低
C、 可以使用 StringBuffer sb="这里是字符串"; ,声明并初始化 StringBuffer 对象 sb
D、 String 类提供了许多用来操作字符串的方法:连接,提取,查询等
StringBuffer sBuffer = new StringBuffer("字符串内容");
String sb="这里是字符串";
8. 下列选项中关于 Java中封装的说法错误的是(A )
A、 封装就是将属性私有化,提供共有的方法访问私有属性
B、 属性的访问方法包括 setter 方法和 getter 方法
C、 setter 方法用于赋值, getter 方法用于取值
D、 包含属性的类都必须封装属性,否则无法通过编译
封装:将属性私有化(private),然后使用get,set方法去取值和赋值。
9. 在Java中,下面对于构造函数(构造器)的描述错误的是(B )
A、 类不一定要显式定义构造函数
B、 构造函数的返回类型是void
C、 如果构造函数不带任何参数,那么构造函数的名称和类名可以不同
D、 一个类可以定义多个构造函数
构造方法的名称必须与它所在的类名完全相同,构造方法无返回值,构造方法名前不能用修饰符void来修饰,因为一个类的构造方法的返回值类型就是该类本身
10. 匹配一个以155开头和1379结尾的11位电话号码,以下选项正则表达式正确的是(B )
A、 ^(155)[0-9]{4}(1379)$
B、 ^155(.){4}(1379)$
C、 ^(155){0-9}{4}(1379)$
D、 ^155[\\w]{4}(1379)$
正则表达式
二、 简答/填空题(共25分)
1. abstract 与哪些关键字不能共存为什么?(6分)
与final,private不能共存
abstract类是创建格式相同的子类,代表抽象;
final代表最终,两者相冲突
private代表私有的,不能被其他类所访问
final:首先abstract修饰的类,该类中的方法子类继承之后需要重写的,可是final修饰的类不能比继承,也就没子类,方法更不能得到重写,相互冲突;不能共存
private:私有的意思,方法子类是不能被继承到的,那么方法就没有被重写,可是abstract是要求方法重写的也相互冲突;不能共存
static:static能被实例化可直接调用,abstract是不能被实例化的,冲突,不能共存。所谓实例化就是创建对象理解为new对象就可以了;
2. 给定 java 代码如下所示,在 A 处增加一个方法,是对 cal 方法的重载(6分)
public class Test {
public void cal(int x, int y, int z) {
}
1.public int cal(int x,int y,float z){}
2.public void cal(int x,int z){}
方法的重载中参数的类型是关键,仅仅是参数的变量名不同是不行的,参数的列表必须不同,即:或者参数个数不同,或者参数类型不同,或者参数的顺序不同
}
3. 用Calendar类来获取系统时间的年份________。(6分)
Calendar calendar=Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
Calender类对象的获得,是通过该类的getInstance()方法创建日历对象,得到当前系统的日期时间
4. 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请问他的年龄是___19_____。(7分)18
1 package PREV_55;
2
3 public class Test {
4 public static void main(String[] args) {
5 char[] a, b;
6 int[] c = new int[10];
7 for (int i = 11; i <= 99; i++) {
8 a = String.valueOf(i * i * i).toCharArray();
9 b = String.valueOf(i * i * i * i).toCharArray();
10
11 int g = i*i*i;
12 int h = i*i*i*i;
13 if (g >= 1000 && g <= 9999) {
14 if (h >= 100000 && h <= 999999) {
15 for (int j = 0; j < 4; j++) {
16 c[j] = a[j] - '0';
17 }
18 for (int k = 0; k < 6; k++) {
19 c[k + 4] = b[k] - '0';
20 }
21 int[] e = new Test().sort(c);
22 boolean f = new Test().judge(e);
23 if(f) {
24 System.out.println(i);
25 break;
26 }
27 }
28 }
29
30 }
31 }
32
33 public int[] sort(int[] a) {
34 int t;
35 for (int i = 0; i < a.length; i++) {
36 for (int j = 0; j < a.length - 1; j++) {
37 if (a[j] > a[j + 1]) {
38 t = a[j];
39 a[j] = a[j + 1];
40 a[j + 1] = t;
41 }
42 }
43 }
44 return a;
45 }
46
47 public boolean judge(int[] a) {
48 int[] b = {0,1,2,3,4,5,6,7,8,9};
49 for(int i = 0;i<b.length;i++) {
50 if(b[i] != a[i]) {
51 return false;
52 }
53 }
54 return true;
55 }
56
57 }
三、 编程题(共45分)
1. 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字(10分)
1 package PREV_55;
2
3 public class Test {
4 public static void main(String[] args) {
5 char[] a, b;
6 int[] c = new int[10];
7 for (int i = 11; i <= 99; i++) {
8 a = String.valueOf(i * i * i).toCharArray();
9 b = String.valueOf(i * i * i * i).toCharArray();
10
11 int g = i*i*i;
12 int h = i*i*i*i;
13 if (g >= 1000 && g <= 9999) {
14 if (h >= 100000 && h <= 999999) {
15 for (int j = 0; j < 4; j++) {
16 c[j] = a[j] - '0';
17 }
18 for (int k = 0; k < 6; k++) {
19 c[k + 4] = b[k] - '0';
20 }
21 int[] e = new Test().sort(c);
22 boolean f = new Test().judge(e);
23 if(f) {
24 System.out.println(i);
25 break;
26 }
27 }
28 }
29
30 }
31 }
32
33 public int[] sort(int[] a) {
34 int t;
35 for (int i = 0; i < a.length; i++) {
36 for (int j = 0; j < a.length - 1; j++) {
37 if (a[j] > a[j + 1]) {
38 t = a[j];
39 a[j] = a[j + 1];
40 a[j + 1] = t;
41 }
42 }
43 }
44 return a;
45 }
46
47 public boolean judge(int[] a) {
48 int[] b = {0,1,2,3,4,5,6,7,8,9};
49 for(int i = 0;i<b.length;i++) {
50 if(b[i] != a[i]) {
51 return false;
52 }
53 }
54 return true;
55 }
56
57 }
2. 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问前20个月每个月的兔子总数为多少?(9分)
1 public class Test2 {
2
3 public static void main(String[] args) {
4 System.out.println("斐波那契数列:" );
5 //方法一:变量
6 int a=1 , b=1 , c=0;
7 System.out.print( a +" " + b + " ");
8 for(int i=2; i<20; i++){
9 c = a + b;
10 a = b;
11 b = c;
12 System.out.print(c + " ");
13 }
14 System.out.println();
15
16 }
17
18 }
3. 按题目编程实现下列功能。(26分)
要求:按照题目所给变量名称、类型和方法名称进行编程,禁止修改;
(1) 图书馆接口(Library)
成员方法:
borrow( ),借阅图书
revert( ),归还图书
(2) 图书类(Book)
成员变量:
图书名称(name) String类型
出版社(publisher) String类型
构造方法:
通过形参初始化图书名称(name)和出版社(publisher)
普通方法:
1)设置getter和setter方法用于获取和设置类中name变量的值;
2)重写equals方法,当且仅当书名(name)和出版社(publisher) 均相等时,即为同一本书。
3)重写toString方法,返回书名(name)和出版社(publisher)的信息,样式如下:“书名:Java程序设计,出版社:清华大学出版社”
(3) 馆藏图书类(CollectionBook),继承自Book类,实现Library接口
成员变量:
图书编号(bId) String类型
是否借阅(isBorrow) boolean类型 图书状态为已借阅时,值为true
构造方法:
调用父类构造方法初始化书名(name)和出版社(publisher)信息,然后初始化图书编号(bId)和线路图书书库(stacks)。
普通方法:
1)实现接口中的borrow方法
如果图书状态为已借阅,则输出“对不起,该图书已借阅”,否则,修改该图书状态为已借阅,输出“借阅成功”
2)实现接口中的revert方法
如果图书状态是可借阅状态,输出“该图书已归还”,否则,修改图书借阅状态为未借阅,并输出“还书成功”;
(4)通过main函数测试。
1)创建两个CollecitonBook对象book1和book2,分别输出book1和book2,并调用其equals方法判断两个对象是否相等;
2)通过键盘输入整数,输入0,则对book1进行借阅,输入1,则对book1进行归还操作。
1 package PREV_55;
2
3 import java.util.Scanner;
4
5 public class Answer2 {
6 public static void main(String[] args) {
7 CollectionBook book1 = new CollectionBook("Java1234","人民邮电","1",true);
8 CollectionBook book2 = new CollectionBook("Java5678","人民邮电","2",false);
9 System.out.println(book1.equals(book2));
10 Scanner scanner = new Scanner(System.in);
11 int a = Integer.parseInt(scanner.nextLine());
12 if(a == 0) {
13 book1.borrow();
14 }else if(a == 1) {
15 book1.revert();
16 }
17 }
18 }
19
20 interface Library{
21 void borrow();
22 void revert();
23 }
24
25 class Book{
26 private String name;
27 private String publisher;
28
29 public Book(String name, String publisher) {
30 this.name = name;
31 this.publisher = publisher;
32 }
33
34 public String getName() {
35 return name;
36 }
37
38 public void setName(String name) {
39 this.name = name;
40 }
41
42 public String getPublisher() {
43 return publisher;
44 }
45
46 public void setPublisher(String publisher) {
47 this.publisher = publisher;
48 }
49
50 @Override
51 public int hashCode() {
52 final int prime = 31;
53 int result = 1;
54 result = prime * result + ((name == null) ? 0 : name.hashCode());
55 result = prime * result + ((publisher == null) ? 0 : publisher.hashCode());
56 return result;
57 }
58
59 @Override
60 public boolean equals(Object obj) {
61 if (this == obj)
62 return true;
63 if (obj == null)
64 return false;
65 if (getClass() != obj.getClass())
66 return false;
67 Book other = (Book) obj;
68 if (name == null) {
69 if (other.name != null)
70 return false;
71 } else if (!name.equals(other.name))
72 return false;
73 if (publisher == null) {
74 if (other.publisher != null)
75 return false;
76 } else if (!publisher.equals(other.publisher))
77 return false;
78 return true;
79 }
80
81 @Override
82 public String toString() {
83 return "书名:"+name+",出版社:"+publisher;
84 }
85 }
86
87 class CollectionBook extends Book implements Library{
88 private String bId;
89 private boolean isBorrow;
90
91 public CollectionBook(String name, String publisher, String bId, boolean isBorrow) {
92 super(name, publisher);
93 this.bId = bId;
94 this.isBorrow = isBorrow;
95 }
96
97 @Override
98 public void borrow() {
99 if(isBorrow) {
100 System.out.println("对不起,该图书已借阅");
101 }else {
102 System.out.println("借阅成功");
103 }
104
105 }
106
107 @Override
108 public void revert() {
109 if(isBorrow) {
110 System.out.println("还书成功");
111 }else {
112 System.out.println("该图书已归还");
113 }
114
115 }
116 }