第一次传入0,if不满足,所以output=“1”,finally一定会执行,所以output = output+"3",也就是output="1"+"3"=="13",此时未报异常,所以程序继续执行,output = output + "4"=="13"+"4"=="134",重点就在这里,output是static,所以output是共享数据,第二次创建对象的时候,output的值为"134".此时,foo(1),if条件满足抛出异常,此处try中下面的语句就不会执行了,直接执行catch中的代码,也就是output = output + "2"=="134" + "2" =="1342",finally中的代码一定会执行,output = output + "3" == "1342" + "3" == "13423"
所以两天输出语句的结果分别是134和13423,希望你能明白 |