单选题
1. JDBC中用于表示数据库连接对象的是
- A. Connection
- B. DriverManager
- C. PreparedStatement
- D. Statement
题解:
java.sql.Connection:数据库系统的连接对象
java.sql.Statement:原始SQL语句
java.sql.PreparedStatement:预编译SQL语句
java.sql.DriverManager:数据库驱动管理器
2. 如下代码
- A. 0
- B. 1
- C. 2
- D. 编译错误
题解:
static不能用于修饰局部变量
3. 在一个线程中sleep(1000)方法,将使得该线程在多长时间后获得对cpu的控制
- A. 小于1000ms
- B. 正好1000ms
- C. 不一定
- D. 大于等于1000ms
题解:
如果在睡眠中没有其它线程唤醒它的话,该线程将在1000ms后竞争cpu,如果没有线程参与竞争(即cpu是空闲的),那么时间刚好是1000ms,否则要等待竞争线程执行结束。
4. 下面哪种类的声明可以禁止子类继承
- A.
- B.
- C.
- D.
题解:
final顾名思义:最终的,是无法被继承/重写/覆盖的。java基础数据类型的包装类型都是final修饰的,例如
5. 下面哪个选项中的代码段放到TODO下,将会产生一个编译错误?
-
java中基础类型的
- A.
- B.
- C.
- D.
题解:
JVM判断两个方法是否相同,是根据方法签名(方法名+参数列表)来判断的。A选项的方法与父类方法相同,属于Override(重写)。Override(重写)遵循一大两小两同原则:
- 一大: 子类的方法访问权限控制符只能相同或变大。
- 两小: 抛出异常和返回值只能变小,能够转型成父类对象。子类的返回值、抛出异常类型必须与父类的返回值、抛出异常类型存在继承关系。
- 两同: 方法名和参数列表必须完全相同(即方法签名相同)。
显然void既不能转成float对象,也与float不存在继承关系。举个例子:
如果选A的话,编译器先去父类找这个方法发现该返回float类型,再去子类找这个方法发现不返回值,无法将void转成float返回,产生了兼容性问题。
6. 在Servlet中处理请求的方式为
- A. 以程序的方式
- B. 以线程的方式
- C. 以响应的方式
- D. 以进程的方式
题解:
servlet容器(如tomcat、jetty)会对每个请求分配一个线程,但servlet默认是单例的,同一个servlet路径的多次请求只是调用该servlet的业务方法。
7. 下面代码的输出结果是什么?
- A. dcba
- B. abdc
- C. acbd
- D. abcd
题解:
Java对象实例化时的顺序为:
- 父类的静态变量和静态代码块加载,加载时按代码的先后顺序进行。
- 子类的静态变量和静态代码块加载,加载时按代码的先后顺序进行。
- 父类实例变量和实例代码块加载,加载时按代码的先后顺序进行。
- 父类的构造方法加载
- 子类实例变量和实例代码块加载,加载时按代码的先后顺序进行。
- 子类的构造方法加载
这个题目不考虑父类和变量,则输出顺序为:
- 静态代码块 "a"
- 实例代码块 "b"
- 实例代码块 "c"
- 构造方法 "d"
8. 已知一棵二叉树的后序遍历是dabec,中序遍历是debac,则它的前序遍历结果是:
- A. ceabd
- B. cedab
- C. cedba
- D. cabde
题解:
我在有道云笔记上写的题解,因为简书既不支持mermaid画图也不支持<font color=red></font>这种改变字体的html标记,看起来就很抠脚。
9. 有一个类Test
运行上面这段代码的命令如下:
则选项正确的是:
- A. arg的值为: "red"
- B. arg的值为: "blue"
- C. arg的值为: null
- D. arg的值为: "red"
- E. 无法正常编译
- F. arg的值为: ""
- G. 程序在运行时抛出异常
题解:
中"java"是Java语言解释执行java字节码文件的命令,Test是被执行的java字节码文件名,red green blue是执行这个文件时传入的参数(以字符串数组的形式接收,即String[] args)。java数组的下标是从0开始的,那么args的最大下标是2(一共三个参数),所以会产生一个运行时异常,数组下标越界。运行一下,和我们的想法一致。
10. 下列哪一种叙述是正确的?
- A. 抽象方法的body部分必须用一对大括号{ }包住。
- B. 声明抽象方法,大括号可有可无。
- C. 声明抽象方法,不可写出大括号。
- D. abstract修饰符可修饰字段、方法和类。
题解:
抽象顾名思义是对一类对象、方法的共同特征进行归一化的逻辑思维过程,是从具体到本质,从个性到共性的过程,是不能有具体实现(即使A选项的大括号里是空的,也不行,算空实现)的,所以A、B错了。abstract不能修饰字段。
11. 在下面这段代码中
12. 第三行的实例对象o将在什么时候被垃圾回收器释放?
- A. 在第六行后被回收。
- B. 在第七行后被回收,也就是方法返回后。
- C. 在此方法中不会被回收。
- D. 第五行被回收。
题解
因为实例对象o是一个局部对象,方法返回后一定已经被释放了。我们看第六行的时候o指向了null,但是oa[0]还持有原来对象(Float(3.14f))的引用,所以这时候它还是可达的。
13. 在下面这段代码中
14. 哪个选项是正确的?
- A. 1,2
- B. 1,1
- C. 2,2
- D. 12,2
- E. 12,12
- F. 编译异常:"+" can not be overloaded for StringBuffer.
题解
15. 不能用来修饰interface的有
- A. public
- B. protected
- C. static
- D. private
题解
四个选项都是访问控制修饰符,接口只能用public修饰,如果不用public修饰,编译器会默认加上public。因为interface是java中抽象的顶级概念,不能被实例化,所以对它进行访问控制是没有意义的,如果想做访问控制,可以对它的实现类进行控制。如果非要对interface进行访问控制,可以尝试
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/18501.html