牛客网-Java专项练习04
答案设置为白色,框选即可显示
1.有关finally语句块说法正确的是( )
A.不管catch是否捕获异常,finally语句块都是要被执行的
B.在try语句块或catch语句块中执行到System.exit(0)直接退出程序
C.finally块中的return语句会覆盖try块中的return返回
D.finally 语句块在 catch语句块中的return语句之前执行
答案:ABC
解析:如果try,finally语句里均有return,忽略try的return,而使用finally的return。无论是否出现异常,finally块中代码都会执行。finally在return执行完成之前,return表达式的结果会暂时保存起来,不会被改变。
2.静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据。( )
A.正确
B.错误
答案:A
解析:
- 静态内部类:
- 静态内部类本身可以访问外部的静态资源,包括静态私有资源。但是不能访问非静态资源,可以不依赖外部类实例而实例化。
- 成员内部类:
- 成员内部类本身可以访问外部的所有资源,但是自身不能定义静态资源,因为其实例化本身就还依赖着外部类。
- 局部内部类:
- 局部内部类就像一个局部方法,不能被访问修饰符修饰,也不能被static修饰。
- 局部内部类只能访问所在代码块或者方法中被定义为final的局部变量。
- 匿名内部类:
- 没有类名的内部类,不能使用class,extends和implements,没有构造方法。
- 多用于GUI中的事件处理。
- 不能定义静态资源
- 只能创建一个匿名内部类实例。
- 一个匿名内部类一定是在new后面的,这个匿名类必须继承一个父类或者实现一个接口。
- 匿名内部类是局部内部类的特殊形式,所以局部内部类的所有限制对匿名内部类也有效。
3.下列哪些操作会使线程释放锁资源?
A.sleep()
B.wait()
C.join()
D.yield()
答案:BC
解析:
1.sleep会使当前线程睡眠指定时间,不释放锁
2.yield会使当前线程重回到可执行状态,等待cpu的调度,不释放锁
3.wait会使当前线程回到线程池中等待,释放锁,当被其他线程使用notify,notifyAll唤醒时进入可执行状态
4.当前线程调用 某线程.join()时会使当前线程等待某线程执行完毕再结束,底层调用了wait,释放锁
4.下列说法正确的有()
A.能被java.exe成功运行的java class文件必须有main()方法
B.J2SDK就是Java API
C.Appletviewer.exe可利用jar选项运行.jar文件
D.能被Appletviewer成功运行的java class文件必须有main()方法
答案:A
解析:
A:正确main方法是入口
B:J2SDK当然不仅仅包含java API
C:jar选项是java.exe 的选项
D:Appletviewer是运行applet的, applet 不用main方法,继承applet类即可。
String str = "";
System.out.print(str.split(",").length);
输出结果为:
A.0
B.1
C.出现异常
答案:B
解析:原字符串不包含分隔符,所以直接返回原字符串,分割出来只有一个空的字符串数组,所以结果是1.(注意,虽然原字符串为空,存到字符串数组为空,但是这个空也会算一个元素。)
6.以下关于JAVA语言异常处理描述正确的有?
A.throw关键字可以在方法上声明该方法要抛出的异常。
B.throws用于抛出异常对象。
C.try是用于检测被包住的语句块是否出现异常,如果有异常,则抛出异常,并执行catch语句。
D.finally语句块是不管有没有出现异常都要执行的内容。
在try块中不可以抛出异常
答案:CD
解析:
throw用于抛出异常。
throws关键字可以在方法上声明该方法要抛出的异常,然后在方法内部通过throw抛出异常对象。
try是用于检测被包住的语句块是否出现异常,如果有异常,则抛出异常,并执行catch语句。
cacth用于捕获从try中抛出的异常并作出处理。
finally语句块是不管有没有出现异常都要执行的内容。