当前位置:网站首页 > Java基础 > 正文

java中基础类型的



单选题

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对象实例化时的顺序为:

  1. 父类的静态变量和静态代码块加载,加载时按代码的先后顺序进行。
  2. 子类的静态变量和静态代码块加载,加载时按代码的先后顺序进行。
  3. 父类实例变量和实例代码块加载,加载时按代码的先后顺序进行。
  4. 父类的构造方法加载
  5. 子类实例变量和实例代码块加载,加载时按代码的先后顺序进行。
  6. 子类的构造方法加载

这个题目不考虑父类和变量,则输出顺序为:

  1. 静态代码块 "a"
  2. 实例代码块 "b"
  3. 实例代码块 "c"
  4. 构造方法 "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进行访问控制,可以尝试

  • 上一篇: java基础任亮
  • 下一篇: java开发平台的基础
  • 版权声明


    相关文章:

  • java基础任亮2024-11-16 16:34:05
  • java基础运算符例子2024-11-16 16:34:05
  • java基础经典练习题2024-11-16 16:34:05
  • java基础133讲2024-11-16 16:34:05
  • java基础gc面试题2024-11-16 16:34:05
  • java开发平台的基础2024-11-16 16:34:05
  • java实习基础面试题2024-11-16 16:34:05
  • java基础案例教程答案黑马2024-11-16 16:34:05
  • 只会java基础能做什么工作2024-11-16 16:34:05
  • 基础的含义 java2024-11-16 16:34:05