1.根据以下程序选出正确答案:
|
-
The program prints”0”
-
The program prints”4”
-
The program prints”8”
-
The program prints”12”
解析:
这道题主要考的是"|"与"||"的区别
用法:condition 1 | condition 2、condition 1 || condition 2
"|"是按位或:先判断条件1,不管条件1是否可以决定结果(这里决定结果为true),都会执行条件2
"||"是逻辑或:先判断条件1,如果条件1可以决定结果(这里决定结果为true),那么就不会执行条件2
2.以下选项正确的是:
-
Java中所有的类都直接或间接继承自Object,无论是否明确的指明,无论其是否是抽象类。
-
Java中的接口(interface)也继承了Object类
-
利用“==”比较两个对象时,Java调用继承自Object的equals方法,判断是否相等。
-
如果类的定义中没有重新定义toString()方法,则该类创建的对象无法使用toStrig()方法。
解析:
Object 是基类 Java中的所有的类都直接或间接的继承;所以A对
从一个class派生的必然是另一个class。Object是一个class,如果interface继承自Object,那么interface必然是一个class,所以B错
利用equals()方法进行比较时 会调用== 可以看equals()方法的源码,可以这样说, == 比equal更加强大,所以C错
toString()方法是Object类中 即使不重写也能使用 所以D错
3.Thread. sleep()是否会抛出checked exception?
-
会
-
不会
解析:Thread.sleep()会抛出InterruptedException,这个属于checked exception,也就是编译时异常,我们必须显式的捕获异常而不能继续上外层抛出,因为这个异常需要该线程自己来解决。
checked exception:指的是编译时异常,该类异常需要本函数必须处理的,用try和catch处理,或者用throws抛出异常,然后交给调用者去处理异常。
runtime exception:指的是运行时异常,该类异常不必须本函数必须处理,当然也可以处理。
Thread.sleep()抛出的InterruptException属于checked exception;IllegalArgumentException属于Runtime exception;
4.分析下列程序输出结果
int
i =
5
;
int
j =
10
;
System.out.println(i + ~j);
-
Compilation error because”~”doesn’t operate on integers
-
-5
-
-6
-
15
解析:记住一个公式 -n=~n+1可推出~n=-n-1,所以~10=-11再加5结果为-6 这里的~n 是指n的补码
5.分析下列程序输出结果
Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150; System. out.println( f1 == f2); System. out.println( f3 == f4);
答案:
true
flase
解析: JVM会自动维护八种基本类型的常量池,int常量池中初始化-128~127的范围,所以当为Integer i=127时, 在自动装箱过程中是取自常量池中的数值,而当Integer i=128时,128不在常量池范围内,所以在自动装箱过程中需new 128, 所以地址不一样
6.分析下列程序输出结果.
int x =4; System.out.println(((x>4)?99.9:9));
答案: 9.0
解析:三目运算符中:第二个表达式和第三个表达式中如果都为基本数据类型,整个表达式的运算结果 由容量高的决定。99.9 是 double 类型 而 9 是 int 类型,double 容量高。
7 关于依赖注入,下列选项中说法错误的是()?
-
依赖注入能够独立开发各组件,然后根据组件间关系进行组装
-
依赖注入提供使用接口编程
- 依赖注入使组件之间相互依赖,相互制约
-
依赖注入指对象在使用时动态注入
解析:依赖注入的目的就是降低耦合,降低各个组件之间的依赖,而不是使组件之间相互依赖,相互制约
8 下列哪个选项是Java调试器?如果编译器返回程序代码的错误,可以用它对程序进行调试。
-
java.exe
-
javadoc.exe
-
jdb.exe
-
javaprof.exe
解析:
java,exe是java虚拟机
javadoc.exe用来制作java文档
jdb.exe是java的调试器
javaprof,exe是剖析工具
9 .有关finally语句块说法正确的是( )多选
-
不管catch是否捕获异常,finally语句块都是要被执行的
-
在try语句块或catch语句块中执行到System.exit(0)直接退出程序
-
finally块中的return语句会覆盖try块中的return返回
-
finally 语句块在 catch语句块中的return语句之前执行
解析:
1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
10 分析下面程序结果为何是0.40000001
double a=4.0f; double b=3.6f; System.out.println(a-b);
解析:2进制的小数无法精确的表达10进制小数,计算机在计算10进制小数的过程中要先转换为2进制进行计算,这个过程中出现了误差。