未来工作室月末考核总结
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);
4. 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请问他的年龄是___19_____。(7分)
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 }