每日五题(第二期)
每日五题系列发布时间:周一到周五下午五点半
1、以下的变量定义语句中,合法的是()
A、byte=128
B、boolean=null
C、long a=123L
D、double=0.9239d
分析:
考验大家眼力的时候到了。
很多人错在了D,仔细看D其实没有变量名,所以很显然错了。
正确的写法应该是 double a = 0.9239d 或者 double a = 0.9239
float a = 0.999f 或 float a = 0.999 也都是可以的
本题答案:C
2、分析以下代码,说法正确的是()
public static void main(String[] args) {
System.out.println(val());
}
public static int val() {
int num = 5;
try {
num = num / 0;
} catch (Exception e) {
num = 10;
} finally {
num = 15;
}
return num;
}
A、运行时报错
B、程序正常运行,输出值为5
C、程序正常运行,输出值为10
D、程序正常运行,输出值为15
分析:
情况1: try{} catch(){}finally{} return;
显然程序按顺序执行。
情况2: try{ return; }catch(){} finally{} return;
先执行try块中return 语句(包括return语句中的表达式运算),但不返回;
执行finally语句中全部代码
最后执行try中return 返回
finally块之后的语句return不执行,因为程序在try中已经return。
情况3: try{ } catch(){return;} finally{} return;
1、程序先执行try,如果遇到异常执行catch块,
有异常:
执行catch中return语句,但不返回
执行finally语句中全部代码,
最后执行catch块中return返回。 finally块后的return语句不再执行。
无异常:执行完try再finally再return…
情况4: try{ return; }catch(){} finally{return;}
执行try块return语句(包括return语句中的表达式运算),但不返回;
再执行finally块,
执行finally块,有return,从这里返回。
此时finally块的return值,就是代码执行完后的值
情况5: try{} catch(){return;}finally{return;}
程序执行catch块中return语句(包括return语句中的表达式运算),但不返回;
再执行finally块,
执行finally块,有return,从这里返回。
情况6: try{ return;}catch(){return;} finally{return;}
1、程序执行try块中return语句(包括return语句中的表达式运算),但不返回;
有异常:
执行catch块中return语句(包括return语句中的表达式运算),但不返回;
再执行finally块
执行finally块,有return,从这里返回。
无异常:
再执行finally块
执行finally块,有return,从这里返回。。
最终结论:
任何执行try 或者catch中的return语句之后,在返回之前,如果finally存在的话,都会先执行finally语句,如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,编译器把finally中的return实现为一个warning。
本题答案:D
3、在面向对象编程里,经常使用is-a来说明对象之间的继承关系,下列对象中不具备继承关系的是?()
A、手机与小米手机
B、企业家与雷军
C、编程语言与Java
D、中国与北京
分析:
类之间存在以下几种常见的关系
use-a 是依赖关系
has-a 一般是组合关系
is-a 一般是继承关系
is-a这样举例会很好解释:
小米手机是一个手机
雷军是个企业家
Java是门编程语言
北京是中国????明显错了
本题答案:D
4、关于访问权限说法正确 的是 ? ( )
A、外部类前面可以修饰public,protected和private
B、成员内部类前面可以修饰public,protected和private
C、局部内部类前面可以修饰public,protected和private
D、以上说法都不正确
分析:
首先,我用一串代码来分析:
class A{
class B{
}
void c(){
int d = 1;
}
}
外部类就是A,它是可以使用访问控制符修饰的,但是外部类只有两种控制级别:public和default。因为private和protect对外部类是没有意义的。
这里的成员内部类就是B,它可以用private、protected、public来修饰。
局部内部类其实我们可以看做是一个局部成员,也就是方法里面的一个变量,这也就说明了局部内部类是不可以用访问控制符修饰的。
本题答案:B
5、基本的Java语言函数存储在以下哪个java包中?()
A、java.lang
B、java.io
C、java.net
D、java.util
分析:
java.lang包包含
包装类
String 类
Math 类 —— 包含函数
Class 类
Object 类
util包主要是集合类、时间处理模式、日期时间工具等各类常用工具包。
lang包 包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等最基本的类。