以下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;

解决方案 »

  1.   

    你没把需要的包导入吧在    public class ItemValue {    的上面加上import java.util.List;
      

  2.   

    建议自己debug走一遍看看流程。
    先打印
    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。
      

  3.   

    考察是try{}catch{}finally{}中的return吧。。
      

  4.   

    想问下,最后finally后面的那句,return b,没有执行吗?
      

  5.   

    没有一、如果try catch finally块均无return则执行最后finally外的return;如果try catch finally中任何一个有return则最后finally外的return不再执行;
    二、只要finally块中有return则try或catch中的return不再执行