以下Java代码的运行结果是()
public class ItemValue {
private static float getValue(){
int a = 10;
float b = 3.4f;
try {
System.out.println((a + b) + ";");
List c = null;
a = c.size() + 1;
} catch (Exception e) {
return a * b;
} finally {
System.out.println((a - b) + ";");
}
return b;
}
public static void main(String[] args) {
System.out.println(getValue() + ";");
}
}
A、13.4;3.4;6.6 B、13.4;6.6;3.4; C、13.4;34.0;6.6 D、13.4;6.6;34.0;
public class ItemValue {
private static float getValue(){
int a = 10;
float b = 3.4f;
try {
System.out.println((a + b) + ";");
List c = null;
a = c.size() + 1;
} catch (Exception e) {
return a * b;
} finally {
System.out.println((a - b) + ";");
}
return b;
}
public static void main(String[] args) {
System.out.println(getValue() + ";");
}
}
A、13.4;3.4;6.6 B、13.4;6.6;3.4; C、13.4;34.0;6.6 D、13.4;6.6;34.0;
先打印
System.out.println((a + b) + ";");
a=10 b =3.4 re = 13.4
List c = null;
c.size()报错进入catch块
跑到return上但是不执行任何调用try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,编译器把finally中的return实现为一个warning。进入finally块
System.out.println((a - b) + ";");
a=10 b =3.4 re = 6.6返回catch的return语句
a= 10 b = 3.4 re = 34任何调用try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,编译器把finally中的return实现为一个warning。
二、只要finally块中有return则try或catch中的return不再执行