牛客选择题练习【四】(20道题)(含答案和解析)

1.JAVA属于(D)。
A 操作系统
B 办公软件
C 数据库系统
D 计算机语言
解析:
计算机软件主要分为系统软件与应用软件两大类。系统软件主要包括操作系统、语言处理系统、数据库管理系统和系统辅助处理程序。应用软件主要包括办公软件和多媒体处理软件。Java是一门面向对象编程语言,属于计算机语言。

2.类声明中,声明抽象类的关键字是 (B)
A public
B abstract
C final
D class

3.在使用 interface 声明一个接口时,只可以使用(D)修饰符修饰该接口
A private
B protected
C private protected
D public
解析:
接口的声明,修饰符的使用和类的声明是一致的,(当前,前提类是外部类,不是所谓的内部类),都只能使用public或者什么都不写,默认权限为public

4.Math.round(11.5) 等于:(C)
A 11
B 11.5
C 12
D 12.5
解析:
round()方法可以这样理解:
将括号内的数+0.5之后,向下取值,比如:round(5.4)就是5.4+0.5=5.9,向下取值是5,所以round(5.4)=5; round(-10.5)就是-10.5+0.5=-10,向下取值就是-10,所以round(-10.5)=-10。所以,Math.round(11.5)就是11.5+0.5=12,向下取值是12。

5.以下对继承的描述错误的是(A)
A Java中的继承允许一个子类继承多个父类
B 父类更具有通用性,子类更具体
C Java中的继承存在着传递性
D 当实例化子类时会递归调用父类中的构造方法
解析:
java不支持多继承

6.在 java 中 , 一个类(B)
A 可以继承多个类
B 可以实现多个接口
C 在一个程序中只能有一个子类
D 只能实现一个接口
解析:
java不支持多继承,可以实现多个接口。一个程序中可以有多个子类。

7.关于以下程序代码的说明正确的(D)

class HasStatic{
	private static int x = 100;
	public static void main(String args[ ]){
		HasStatic hs1 = new HasStatic();
		hs1.x++;//先赋值x=100,再++,++后x变为101
		HasStatic hs2 = new HasStatic();
		hs2.x++;//先赋值x=101,再++,++后x变为102
		hs1=new HasStatic();
		hs1.x++;//先赋值x=102,再++,++后x变为103
		HasStatic.x--;//先赋值x=103,再--,--后x变为102
		System.out.println( "x=" +x);//此时输出x=102
	}
}

A 5行不能通过编译,因为引用了私有静态变量
B 10行不能通过编译,因为x是私有静态变量
C 程序通过编译,输出结果为:x=103
D 程序通过编译,输出结果为:x=102
解析:
该程序能够通过编译,程序中声明了2个对象hs1和hs2,而hs1初始化两次,虽然x被定义为私有的变量,但在本类中是可以调用的。所以输出结果为x=102(输出过程见代码注释)。

8.以下 (D)不是 Object 类的方法
A clone()
B finalize()
C toString()
D hasNext()
解析:
Object类的方法如下:
在这里插入图片描述

9.下面哪一项不是 java 类访问控制关键字(B)
A public
B this
C private
D protected
解析:
java 类访问控制关键字:
在这里插入图片描述

10.java 语言使用的字符码集是(D)
A ASCII
B BCD
C DCB
D Unicode
解析:
Java语言使用的是Unicode字符集。而ASCII是国际上使用最广泛的字符编码;BCD是一种数字压缩存储编码方法。

11.java中关于内存回收的正确说法是(B)
A 程序员必须创建一个线程来释放内存
B 内存回收程序负责释放无用内存
C 内存回收程序允许程序员直接释放内存
D 内存回收程序可以在指定的时间释放内存对象
解析:
java的GC回收是完全自动的,没有提供相关api手动回收,所有的内存分配和回收权限都在jvm,在开发人员手里没有绝对的强制垃圾回收的方法

12.A派生出子类B,B派生出子类C,并且在java源代码中有如下声明:(A)

A a0=new A();
A a1=new B();
A a2=new C();

A 第1行,第2行和第3行的声明都是正确的
B 第1,2,3行都能通过编译,但第2,3行运行时出错
C 第1,2行能通过编译,但第3行编译出错
D 只有第1行能通过编译
解析:
java中继承具有传递性,第二行属于向上转型,第三行是因为java继承具有传递性。

13.以下说法错误的是(C)
A 数组是一个对象
B 数组不是一种原生类
C 数组的大小可以任意改变
D 在Java中,数组存储在堆中连续内存空间里
解析:
数组大小一旦确定就不能改变。 数组长度必须在编译时确定

14.Test.main() 函数执行后的输出是(D)

public class Test {
	public static void main(String [] args){
		System.out.println(new B().getValue());
	}
	static class A{
	protected int value;
	public A(int v) {
		setValue(v);
	}
	public void setValue(int value){
		this.value = value;
	}
	public int getValue(){
		try{
			value++;
			return value;
		} catch(Exception e){
			System.out.println(e.toString());
		} finally {
			this.setValue(value);
			System.out.println(value);
		}
	return value;
	}
}
	static class B extends A{
		public B() {
			super(5);
			setValue(getValue() - 3);
		}
		public void setValue(int value){
			super.setValue(2 * value);
		}
	}
}

A 11 17 34
B 22 74 74
C 6 7 7
D 22 34 17
解析:
首先,super()函数指的是调用父类的构造方法
① new B()执行B的构造函数
第一行是super(5);此时执行的是A的构造函数,A的构造函数调用的是setValue()方法,由于B重写了A的这个方法,所以,执行的是B的 setValue()方法。即传入的参数是25=10。此时,因为super,所以调用的是父类的 setValue()方法,即value=10。第一行执行完毕。
第二行是 setValue(getValue()-3);B没有getValue()方法,故执行父类的此方法,try返回的是value=10+1=11,保存在临时栈中,finally中调用this的方法,这个this指的是B的对象,又重写,故就是B的 setValue()方法。value=2
11=22,第一个打印到屏幕上的数字接下来参数 getValue()-3=11-3=8。传入B的 setValue()方法,此时value=28=16。至此,new B()执行结束
② new B(). getValue()。B没有 getValue(),故执行A的 getValue()。try返回16+1=17,保存到临时栈中,finally调用B的 setValue()方法value=17
2=34,第二个打印到屏幕上面的数字。最后主函数打印返回值,也就是打印try保存到临时栈中的17。

15.关于Java的异常处理机制的叙述哪些正确?(C)
A 如果程序发生错误及捕捉到异常情况了,才会执行finally部分
B 其他选项都不正确
C 当try区段的程序发生异常且被catch捕捉到时,才会执行catch区段的程序
D catch部分捕捉到异常情况时,才会执行finally部分
解析:
try和catch语句 :将要处理的代码放入try块中,然后创建相应的catch块的列表。如果生成都异常与catch中提到的相匹配,那么catch条件中的块语句就被执行。try块后可能有许多catch块,每个都处理不同的异常。每个catch中的参数都是Exception的子类。
finally语句 :finally语句定义一个总是执行的代码,而不考虑异常是否被捕获。

16.如何跳出Array的forEach循环?( A)
A break
B return true
C return false
D 以上都不是

17.一个以”.java”为后缀的源文件(C)
A 只能包含一个类,类名必须与文件名相同
B 只能包含与文件名相同的类以及其中的内部类
C 只能有一个与文件名相同的类,可以包含其他类
D 可以包含任意类

18.如下Java语句执行后, x的值是(D)

double x= 3.0;
int y=5;
x/=--y;

A 3
B 0.6
C 0.4
D 0.75
解析:
x/=–y ---->x=3.0/4.0=0.75

19.cnt的值是(A)

public class Test{
	static int cnt = 6;
	static{
		cnt += 9;
	}
	public static void main(String[] args){
		System.out.println(“cnt =+ cnt);
	}
	static{
		cnt /=3;
	};
}

A cnt=5
B cnt=2
C cnt=3
D cnt=6
解析:
cnt = 6+9=15,cnt=15/3=5

20.JUnit主要用来完成什么(D)
A 发送HTTP请求
B 建立TCP连接
C 集成测试
D 单元测试
解析:
JUnit是一个Java语言的单元测试框架,有程序员自测,就是所谓的白盒测试,主要四个方向 (1)用于测试期望结果的断言(Assertion)(2)用于共享共同测试数据的测试工具 (3)用于方便的组织和运行测试的测试套件(4)图形和文本的测试运行器(unit单元的意思)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值