1.异常返回值
我们知道异常的框架如:
try{ //异常代码 }catch() { }finally{ }
代码是最好的说明:
public class ExpRetVal { public static int func() { try{ throw new Exception(){}; }catch(Exception e) { return 0; }finally { return 1; } } public static void main(String[] args) { System.out.println(func()); } }
在catch中我捕获异常,返回0,然后我在finally我返回1,到底返回0还是1?返回值可以覆盖吗?
输出是1,很有意思,结论告诉我们返回值是可以覆盖的。
finally总是在return之前被执行,如果finally中返回值,就直接返回。
2.递归的一点点思考
有这样的情况,给出一个包名(例如org.ljh.reflect,此处给出包名org),我要遍历包下所有的.class文件,如果找到我就返回一个true,说明有这个类的字节码,然后我通过反射实例化这个类。凑合着看下伪代码:
public boolean exist(String packageName) { if("在这个包找到了") { return true; }else{ exist("当前包名"); } return false; }
结果不确定了,可能是true,也可能是false,这就是因为递归引起的覆盖,怎么解决,通过静态成员变量的方式(静态成员变量在类范围,不在对象范围,每个对象共享):
static boolean isExist = false; public boolean exist(String packageName) { if("在这个包找到了") { isExist = true; }else{ exist("当前包名"); } return isExist; }
初学者发帖,大牛勿喷,不足之处多多指正。
相关推荐
Java语言程序设计教程课件第六章异常处理、递归和单体程序设计,教程选用清华大学雍俊海编写的Java程序设计教程第三版
c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘...
用C语言开发的递归和非递归二分查找算法,具体内容详见代码
宏递归宏递归宏递归宏递归宏递归宏递归宏递归宏递归宏递归宏递归
C#递归C#递归C#递归C#递归C#递归C#递归C#递归C#递归C#递归
栈和递归的实现
Java语言程序设计:ch06 异常处理、递归和单体程序设计方法.ppt
第五章 函数与应用5.6递归思想和递归函数正确答案:B你选对了如果递归函数没有递归结束的语句,将会导致无穷递归,从而执行时出现“死循环”正确答案:2 3 6如下
浅析PHP递归函数返回值使用方法,需要的朋友可以参考一下
递归和非递归方式计算Ackerman函数。非递归方法用堆栈实现。代码内部有详细的注释说明,比较适于学习。
本文实例讲述了C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法。分享给大家供大家参考,具体如下: /*求二叉树叶子节点个数 -- 采用递归和非递归方法 经调试可运行源码及分析如下: ***/ #include #...
ackman函数的递归和非递归,学习数据结构的素材,非递归是使用堆栈实现的。
快速选择非递归与递归算法实现
基于极限树特征递归消除和LightGBM的异常检测模型.docx
文件递归-XML递归-树图递归 面试中的常见递归算法:附带截图和详细代码
初学者资料,使用栈和递归实现遍历电脑磁盘文件,通过本资料,可以非常方便的学习与对比两种实现方法的不同。 两个例子,全部使用的是异步执行方法,并且有当前遍历的进度显示。
DNS递归和迭代
顺序执行、循环和跳转是冯·诺依曼计算机体系中程序设计语言的三大基本控制结构,这三种控制结构构成了千姿百态的算法,程序,乃至整个软件世界。递归也算是一种程序控制结构,但是普遍被认为不是基本控制结构,因为...
VC对磁盘文件遍历搜索的递归算法和非递归算法 里面的文档是讲解递归算法和递归算法的 里面还有一个Vc工程文件,是我自己写的,关于非递归算法,其实里面那些被注释掉的部分是递归算法,大家仔细看看就知道了,
合并排序递归和非递归算法的实现可以让人理解到递归算法的实现有时候比非递归算法效率高很多,人只需要给出一个递归公式和一个递归出口,所有的事都可以交给计算机来完成了