java基础问题12
来源:互联网 发布:asp在线考试系统源码 编辑:程序博客网 时间:2024/04/29 17:36
36、下面的程序代码输出的结果是多少?
public class smallT
{
public static void main(String args[])
{
smallT t = new smallT();
int b = t.get();
System.out.println(b);
}
public int get()
{
try
{
return 1 ;
}
finally
{
return 2 ;
}
}
}
返回的结果是2。
我可以通过下面一个例子程序来帮助我解释这个答案,从下面例子的运行结果中可以发现,try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,所以,返回的结果是2。Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。
在讲解答案时可以用下面的程序来帮助分析:
public class Test {
/**
* @param args add by zxx ,Dec 9, 2008
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Test().test());;
}
int test()
{
try
{
return func1();
}
finally
{
return func2();
}
}
int func1()
{
System.out.println("func1");
return 1;
}
int func2()
{
System.out.println("func2");
return 2;
}
}
-----------执行结果-----------------
func1
func2
2
结论:finally中的代码比return 和break语句后执行
37、final, finally, finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
内部类要访问局部变量,局部变量必须定义成final类型,例如,一段代码……
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用
38、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
39、error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
- java基础问题12
- java基础问题请教!
- Java几个基础问题
- Java基础 问题
- java基础问题大全
- JAVA初学基础问题
- 子父类问题.JAVA基础
- java基础问题
- JAVA经典基础问题
- java 基础问题
- java 面试基础问题
- java基础问题
- java基础问题01
- java基础问题02
- java基础问题03
- java基础问题04
- java基础问题05
- java基础问题06
- C语言统计每行的字符数
- 云计算 权威定义-摘自袁萌
- 类库/函数库/工具包/中间模块等的编译选择
- 字符常量VS字符串常量
- windows7硬盘安装
- java基础问题12
- myeclipse代码无提示的解决
- JavaScript计算日期的函数
- 【被教育了】小学课本里那些扯淡课文
- 关于前台传进的数据JsonReader读不出来的问题
- 【咱这教育牛滴】小学语文教材中那些脑残的课文
- 推荐8个超棒的学习 jQuery 的网站
- Web开发人员常用速查手册
- 裸机系列——2440串口通信2程序代码