java极客营10营第三周考试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
极客营十营第三周考试试卷
总分:100分时间:120分钟
单选题( 共25题)
第1题(分值:2分)
编译并运行以下程序,以下描述哪个选项是正确的()
1. class Y{
2. protected String toString(){
3. return super.toString();}
4. }
A:编译通过运行无异常
B:编译通过但运行时出错
C:行2出错,不能成功编译
D:不能成功编译,行3出错
第2题(分值:2分)
public class Test{
public static void stringReplace(String text){
text=text.replace('j','L');
}
public static void bufferReplace(StringBuffer text){
text=text.append("c");
}
public static void main(String args[]){
String textString=new String("java");
StringBuffer textBuffer=new StringBuffer("java");
stringReplace(textString);
bufferReplace(textBuffer);
System.out.println(textString+textBuffer);
}
}
A:编译并运行输出Lava javac
B:编译并运行输出java java
C:编译并运行输出java javac
D:编译并运行输出Lava java
第3题(分值:2分)
以下关于final关键字说法错误的是()
A:final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性
B:final修饰的类肯定不能被继承
C:final修饰的方法不能被重写
D:final修饰的变量不允许被再次赋值
第4题(分值:2分)
当编译和运行下面程序时,哪项描述可以最准确的表达发生了什么事情?public class MyAr{
public static void main(String argv[]) {
MyAr m = new MyAr();
m.amethod();
}
public void amethod(){
int i;
System.out.println(i);
}
}
A:编译并输出0
B:编译错误
C:编译并输出null
D:运行错误
第5题(分值:2分)
以下对继承的正确描述是()。
A:在Java中类只允许单一继承
B:在Java中一个类只能实现一个接口
C:在Java中一个类不能同时继承一个类和实现一个接口
D:在Java中接口只允许单一继承
第6题(分值:2分)
以下代码运行输出是()
public class Person{
private String name=”Person”;
int age=0;
}
public class Child extends Person{
public String grade;
public static void main(String[] args){
Person p = new Child();
System.out.println();
}
}
A:输出:Person
B:没有输出
C:编译出错
D:运行出错
第7题(分值:2分)
类A、B定义如下:
1. public class A
2.{ public float aFun(float a, float b) { }
4.}
5.public class B extends A{
6.
7.}
将以下哪种方法插入行6是不合法的。
()
A:float aFun(float a, float b){ }
B:public int aFun(int a, int b) { }
C:public float aFun(float p, float q){ }
D:public int aFun(int a, float b) { }
第8题(分值:2分)
应使用哪种修饰符定义一个类域或类方法?()
A:static
B:package
C:private
D:public
第9题(分值:2分)
假设类X是类Y的父类,下列声明对象x的语句中不正确的是()。
A:X x = new X() ;
B:X x = new Y() ;
C:Y x = new Y() ;
D:Y x = new X() ;
A:public int addvalue(int I,int j)
B:public void addvalue()
C:public void addvalue(double i)
D:public int addvalue(int a)
第11题(分值:2分)
在使用super 和this关键字时,以下描述正确的是()
A:在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B:super()和this()不一定要放在构造方法内第一行
C:this()和super()可以同时出现在一个构造函数中
D:this()和super()可以在static环境中使用,包括static方法和static语句块
第12题(分值:2分)
覆盖与重载的关系是()
A:覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中
B:覆盖方法可以不同名,而重载方法必须同名
C:final修饰的方法可以被覆盖,但不能被重载
D:覆盖与重载是同一回事
第13题(分值:2分)
给出如下代码:
class Test{
private int m;
public static void fun() {
// some code...
}
}
如何使成员变量m 被函数fun()直接访问?()
A:将private int m 改为protected int m
B:将private int m 改为public int m
C:将private int m 改为static int m
D:将private int m 改为int m
A:1 2 3
B:Compilation fails because of an error in line 12.
C:Compilation fails because of an error in line 13.
D:Compilation fails because of an error in line 14. E:A ClassCastException is thrown at runtime.
第15题(分值:2分)
关键字supper的作用是
A:用来访问父类的成员变量
B:用来调用父类中被重写的方法
C:用来调用父类的构造函数
D:以上都是
A:Alpha a = x;
B:Foo f= (Delta)x;
C:Foo f= (Alpha)x;
D:Beta b = (Beta)(Alpha)x;
第17题(分值:2分)
在java 中,下列() 类不能派生出子类.
A:public class MyClass{ }
B:class MyClass{ }
C:abstract class MyClass{ }
D:final class MyClass { }
第18题(分值:2分)
给定如下java代码,编译时会在()出现错误。
class Parent{
}
class Child extends Parent{
public static void main(String args[]){
Parent p1=new Child() ;//第一行
Parent p2=new Parent () ;//第二行
Child c1=new Child() ;//第三行
Child c2=new Parent () ;//第四行
}
A:第一行
B:第二行
C:第三行
D:第四行
第19题(分值:2分)
给定如下java代码,以下()代码行编译会报错。
class MyClass{
void myMethod(final int p){
final int il;
final int i2=p;
i1=20;
i2=20;
}
}
A:final int il;
B:final int i2=p
C:il=20
D:i2=20;
第20题(分值:2分)
关于被私有访问控制符protected修饰的成员变量,以下说法正确的是()
A:可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类B:可以被两种类访问和引用:该类本身、该类的所有子类
C:只能被该类自身所访问和修改
D:只能被同一个包中的类访问
第21题(分值:2分)
在下面程序的第6行补充上下列哪个方法,会导致在编译过程中发生错误?
1) class Super{
2) public float getNum(){
3) return 3.0f;
4) }
5) public class Sub extends Super{
6)
7) }
A:public float getNum(){return 4.0f;}
B:public void getNum(){}
C:public void getNum(double d){}
D:public double getNum(float d){return 4.0d;}
第22题(分值:2分)
What will be printed when you execute(执行) the following code?
class X {
Y b = new Y();
System.out.print("X");
}
}
class Y {
Y(){
System.out.print("Y");
}
}
public class Z extends X {
Y y = new Y();
Z() {
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}
Choices( )
A:Z
B:YZ
C:XYZ
D:YXYZ
第23题(分值:2分)
下列代码的输出结果是:()
class Parent {
void printMe() {
System.out.println("parent");
}
}
class Child extends Parent {
void printMe() {
System.out.println("child");
}
void printall() {
super.printMe();
this.printMe();
printMe();
}
}
public class Test_this {
public static void main(String args[]) {
Parent myC=new Child();
myC. printMe();
myC.printall();
}
}
A:child parent child child
B:parent child parent child
C:parent child child child
D:编译错误
第24题(分值:2分)
设有下面两个赋值语句:
a = Integer.parseInt(“12”);
b = Integer.valueOf(“12”).intValue();
下述说法正确的是()。
A、a是整数类型变量,b是整数类对象。
B、a是整数类对象,b是整数类型变量。
C、a和b都是整数类对象并且值相等。
D、a和b都是整数类型变量并且值相等。
第25题(分值:2分)
Given:
22. StringBuilder sb1 = new StringBuilder("123");
23. String s1 = "123";
24. //insert code here
25. System.out.println(sb1 + " " + s1);
下面代码插入24行,输出“123abc 123abc”?
A. sb1.append("abc"); s1.concat("abc");
B. sb1.concat("abc"); s1.append("abc");
C. sb1.append("abc"); s1 = s1.concat("abc");
D. sb1.append("abc"); s1 = s1 + s1.concat("abc");
E. sb1.concat("abc"); s1 = s1 + s1.concat("abc");
多选题( 共5题)
第26题(分值:3分)
给定JAVA程序Test.java,如下:
package com;
public class Test{
public void talk( ) { }
protected void walk( ) { }
void climb( ) { }
private void jump( ) { }
给定Test的子类Test2,代码如下:
Package com.util;
Public class Test2 extends Test
{
Public static void main(String[] args)
{
Test2 tt=new Test2( ) ;
//A
}
}
可以在Test2的A处加入的代码是()。
A:tt.talk( ) ;
B:tt.walk( ) ;
C:tt.climb( ) ;
D:tt.jump( ) ;
第27题(分值:3分)
(方法覆盖)有如下代码
class Super{
private void method(){}
}
class Sub extends Super{
//1
}
在//1 处,能编译通过的代码为:
A:public int method(){return 0;}
B:void method(){}
C:void method(int n){}
D:private void method(){}
第28题(分值:3分)
(多态)有如下代码
class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}
public class TestAnimal{
public static void main(String args[]){
//主方法代码省略
}
public Animal getAnimal(){
//1
}
}
问:下列几个选项中,有哪几个放在//1 位置能够编译通过?
B:return new Animal();
C:return new Dog();
D:return new Cat();
第29题(分值:3分)
编译并运行下面的程序,下面描述正确的有( ).
public class A {
public static void main (String[] args) {
A a=new B( );
a.test();
}
void test() {
System.out.print ("A");
}
}
class B extends A {
void test() {
super.test();
System.out.println("B");
}
}
A:子类B定义了与父类A中同名的方法test,java中称为方法的覆盖。
B:代码可以编译运行,并输出结果:AB。
C:代码可以编译运行,并输出结果:A。
D:子类B定义了与父类A中同名的方法test,java中称为方法的重载。
第30题(分值:3分)
下面关于构造方法的说法正确的是()
A:构造方法不能被继承
B:构造方法不能被重写
C:构造方法不能被重载
D:构造方法不能声明为private
填空题( 共4题)
第31题(分值:3分)
(继承、对象构造过程)有以下代码
class Vegetable {
public Vegetable(){
System.out.print("Vegetable()");
}
}
class Potato extends Vegetable{
public Potato(){
System.out.print("Potato()");
}
}
class Tomato extends Vegetable{
public Tomato(){
System.out.print("Tomato()");
}
}
class Meat{
public Meat(){
System.out.print("Meat()");
}
}
class Sandwich{
Potato p = new Potato();
Meat m = new Meat();
Tomato t = new Tomato();
public Sandwich(){
System.out.print("Sandwich()");
}
}
public class TestSandwich{
public static void main(String args[]){
Sandwich s = new Sandwich();
}
}
写出这段代码的输出结果________________________________________________
第32题(分值:3分)
class Exp1 {
public static void main(String[] args) {
String s,s1="";
char c;
s=args[0];
for(int i=0;i<s.length();i++){
c=s.charAt(i);
if(c>='a' && c<='z'){
s1=s1+Character.toUpperCase(c);
}else{
s1=s1+Character.toLowerCase(c);
}
}
System.out.println(s1);
}
}
若在dos命令行输入:java Exp1 abcDEF,则输出为___________________
第33题(分值:3分)
class IntORString{
void iosM(int i){
System.out.print(“integer”);
}
void iosM(String s){
System.out.print(“String”);
}
Public static void main(String args[]) {
IntORString ios = new IntORString ( );
ios.iosM(‘a’);
ios.iosM(“1”);
}
}
运行结果为:_________________________
第34题(分值:3分)
Given:
1. public class KungFu{
2. public static void main(String[] args){
3. Integer x = 400;
4. Integer y = x;
5. x++;
6. StringBuilder sb1 = new StringBuilder("123");
7. StringBuilder sb2 = sb1;
8. sb1.append("5");
9. System.out.println((x == y) + " " + (sb1 == sb2));
10. }
11. }
运行结果为:_________________________
第35题(分值:3分)
11. public enum Title{
12. MR("Mr."), MRS("Mrs."), MS("Ms.");
13. private final String title;
14. private Title(String t){title = t;}
15. public String format(String last, String first){
16. return title + " " + first + " " + last;
17. }
18. }
119. public static void main(String[] args){
200. System.out.println(Title.MR.format("Doe", "John"));
201. }
运行结果为:_________________________
问答题( 共2题)
第36题(分值:10分)
定义一个交通工具类(Transport)和它的两个子类;汽车类(Vehicle)和飞机类(Airplane)
说明一:关于Transport
两个属性,速度(speed,int)载重量(load,float)
两个get方法,能够取得两个属性的值
一个构造方法,能够初始化这两个属性
一个show()方法,取得两个属性的值并打印
说明二:关于Vehicle
继承Transport
添加4个属性,车轮数(wheels,int),车重量(weight,float) 发动机类型(enginertype,String)发动机数量(enginers,int)
添加get方法,能够取得新添加属性的值
一个show()方法,获取其属性的值并打印
说明三:关于Airplane
和说明二的要求一致,只要求新添加的两个属性为发动机类型(enginertype,String)发动机数量(enginers,int)
最后,在测试类方法中生成汽车类和飞机类的对象
第37题(分值:10分)
定义两个类Dog,SmallDog,SmallDog继承Dog
说明一:关于Dog
两个属性,狗的名字(dogName,String),狗的年龄(dogAge,int)
一个方法,dogWalk(),打印一句话简单描述狗走路的样子
一个构造方法,无参数
添加两个set方法分别能够设置属性dogName和dogAge的值
重写Object类方法获取对象信息
说明二:关于SmallDog
继承Dog,添加属性狗的颜色(color,String)
在测试类中的方法中生成SmallDog类的对象并赋值给Dog对象对其操作,并查看其信息
调用dogWalk(),看看效果
现在可能要对狗对象的age数据进行修改,定义方法实现对Dog、SmallDog的修改操作。