当前位置:文档之家› java编程题目及答案

java编程题目及答案

java编程题目及答案1. 下面哪些是thread类的方法()a start()b run()c exit()d getpriority()答案:abd解析:看java api docs吧:http://docs.oracle/javase/7/docs/api/,exit()是system类的方法,如systeexit(0)。

2. 下面关于ng.exception类的观点恰当的就是()a 继承自throwableb serialable cd 不记得,反正不正确答案:a解析:java异常的基类为ng.throwable,ng.error和ng.exception继承 throwable,runtimeexception和其它的exception等继承exception,具体的runtimeexception继承runtimeexception。

拓展:错误和异常的区别(error vs exception)1) ng.error: throwable的子类,用于标记严重错误。

合理的应用程序不应该去try/catch这种错误。

绝大多数的错误都是非正常的,就根本不该出现的。

ng.exception: throwable的子类,用作命令一种合理的程序要去catch的条件。

即为它仅仅就是一种程序运行条件,而非严重错误,并且引导用户程序回去catch它。

2) error和runtimeexception 及其子类都是未检查的异常(unchecked exceptions),而所有其他的exception类都是检查了的异常(checked exceptions).checked exceptions: 通常从一个可以恢复正常的程序中原都的,并且最出色能从这种异常中采用程序恢复正常。

比如说filenotfoundexception, parseexception等。

检查了的异常出现在编程阶段,必须必须采用try…catch(或者throws)否则编程不通过。

unchecked exceptions: 通常是如果一切正常的话本不该发生的异常,但是的确发生了。

发生在运行期,具有不确定性,主要是由于程序的逻辑问题所引起的。

比如arrayindexoutofboundexception, classcastexception等。

从语言本身的角度讲,程序不该去catch这类异常,虽然能够从诸如runtimeexception这样的异常中catch并恢复,但是并不鼓励终端程序员这么做,因为完全没要必要。

因为这类错误本身就是bug,应该被修复,出现此类错误时程序就应该立即停止执行。

因此,面对errors和unchecked exceptions应该让程序自动终止执行,程序员不该做诸如try/catch这样的事情,而是应该查明原因,修改代码逻辑。

runtimeexception:runtimeexception体系包含错误的初始化、数组越界出访和企图出访空指针等等。

处理runtimeexception的原则是:如果出现 runtimeexception,那么一定是程序员的错误。

例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。

其他(ioexception等等)checked异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。

3. 下面程序的运转结果就是()string str1 = "hello";string str2 = "he" + new string("llo");systeerr.println(str1 == str2);答案:false解析:因为str2中的llo是新申请的内存块,而==判断的是对象的地址而非值,所以不一样。

如果是string str2 = str1,那么就是true了。

4. 以下观点恰当的存有()a. class中的constructor不可省略b. constructor必须与class同名,但方法无法与class同名c. constructor在一个对象被new时执行d.一个class就可以定义一个constructor答案:c解析:这里可能会存有误区,其实普通的类方法就是可以和Pthreads同名的,和构造方法唯一的区分就是,构造方法没返回值。

5. 具体选项不记得,但用到的知识如下:string []a = new string[10];则:a[0]~a[9] = nulla.length = 10如果是int []a = new int[10];则:a[0]~a[9] = 0a.length = 106. 下面程序的运转结果:()public static void main(string args[]) {thread t = new thread() {public void run() {pong();}};t.run();systeout.print("ping");}static void pong() {systeout.print("pong");}#formatimgid_0#a pingpongb pongpingc pingpong和pongping都有可能d 都不输入答案:b解析:这里托福的就是thread类中start()和run()方法的区别了。

start()用以启动一个线程,当调用start方法后,系统才可以打开一个代莱线程,进而调用run()方法去继续执行任务,而单独的调用run()就跟调用普通方法就是一样的,已经丧失线程的特性了。

因此在启动一个线程的时候一定必须采用start()而不是run()。

7. 下列属于关系型数据库的是()a. oracle b mysql c ims d mongodb答案:ab答疑:ims(information management system )数据库就是ibm公司研发的两种数据库类型之一;一种是关系数据库,典型代表产品:db2;另一种则就是层次数据库,代表产品:ims层次数据库。

非关系型数据库有mongodb、memcachedb、redis等。

8. gc线程与否为守护者线程?()答案:是解析:线程分成守护者线程和非守护者线程(即为用户线程)。

只要当前jvm实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着jvm一同结束工作。

守护者线程最典型的应用领域就是 gc (垃圾废旧器)9. volatile关键字是否能保证线程安全?()答案:无法解析:volatile关键字用在多线程同步中,可保证读取的可见性,jvm只是保证从主内存加载到线程工作内存的值是最新的读取值,而非cache中。

但多个线程对volatile的写下操作方式,无法确保线程安全。

比如假如线程1,线程2 在展开read,load 操作方式中,辨认出主内存中count的值都就是5,那么都会读取这个最新的值,在线程1堆上count展开修正之后,可以write至主内存中,主内存中的count变量就可以变成6;线程2由于已经展开read,load操作方式,在展开运算之后,也可以更新主内存count的变量值为6;引致两个线程及时用volatile关键字修正之后,还是可以存有mammalian的情况。

10. 下列说法正确的是()a linkedlist承继自listb abstractset继承自setc hashset承继自abstractsetd weakmap继承自hashmap答案:ac解析:下面是一张下载的java中的集合类型的继承关系图,一目了然。

#formatimgid_111. 存在使i + 1 < i的数吗()#答案:存有解析:如果i为int型,那么当i为int能表示的`最大整数时,i+1就溢出变成负数了,此时不就拓展:存有并使i > j || i <= j不设立的数吗()答案:存在解析:比如说double.nan或float.nan,非常感谢@builderqiu网友表示。

12. 0.的数据类型是()a floatb doublec floatd double答案:b解析:预设为double型,如果为float型须要加之f表明表明,即0.f13. 下面哪个流类属于面向字符的输入流( )a bufferedwriterb fileinputstreamc objectinputstreamd inputstreamreader答案:d解析:java的io操作方式中存有面向字节(byte)和面向字符(character)两种方式。

面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是inputstream和outputstream的子类。

面向字符的操作方式为以字符为单位对数据展开操作方式,大二的时候将二进制数据变为字符,在写下的时候将字符变为二进制数据,这些类都就是reader和writer的子类。

总结:以inputstream(输入)/outputstream(输出)为后缀的是字节流;以reader(输出)/writer(输入)为后缀的就是字符流。

14. java接口的修饰符可以为()a privateb protectedc finald abstract答案:cd解析:USB很关键,为了表明情况,这里稍微��嗦点:(1)接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须是公开(public)类型的,确保外部使用者能访问它们;(2)USB仅仅叙述系统能够搞什么,但不阐明如何回去搞,所以USB中的方法都就是抽象化(abstract)方法;(3)接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量;(4)USB的中的变量就是所有同时实现类共计的,既然共计,确实就是维持不变的东西,因为变化的东西也不能算是共计。

所以变量就是不容变小(final)类型,也就是常量了。

(5) 接口中不可以定义变量?如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。

有的人会说了,没有关系,可以通过实现接口的对象的行为来修改接口中的属性。

这当然没有问题,但是考虑这样的情况。

如果接口 a 中有一个public 访问权限的静态变量 a。

按照 java 的语义,我们可以不通过实现接口的对象来访问变量 a,通过 a.a = xxx; 就可以改变接口中的变量 a 的值了。

相关主题