运行结果为4,44,出现这种结果的原因是finally语句块导致的,因为finally语句块是一定会运行的,所以以上结果都被4覆盖了。如果把finally语句块去掉的话,结果会是1,02,test(null)是空指针异常,被第一个catch捕获,打印错误信息并返回1;test("0")没有异常,因为返回值是int型,所以默认返回0;test("")是字符串下标越界异常,是RuntimeException异常,呗第二个catch捕获,打印错误信息,并返回2;至于str.charAt(0)-'0',str.char(0)是取字符串str中第0个字符,也就是str中第一个字符,str.charAt(0)-'0'表示返回两个字符对应的ASCII值的差,是int型数据 |