您的位置:首页 > 编程语言 > Java开发

Java 关于finally、static

2016-06-29 12:11 363 查看
论坛上看到的两道题目,如下:

//为啥运行结果是1 0    不是 0 0呢   谁能解释下啊

public class FinallyDemo {
static int value = 0;
static int inc() {
return value++;
}

static int dec() {
return value--;
}

static int getResult() {
try {
return inc();

} finally {
return dec();
}
}

public static void main(String[] args) {
System.out.println(getResult());
System.out.println(value);
}

}


public class Null {
public static void greet() {
System.out.println("Hello world");
}

public static void main(String[] args) {
Null x = null;
x.greet();
((Null)x).greet();
((Null)null).greet();
}

}

//请问这个代码运行结果会是什么


第一个不用多说,考查的是后缀自增/减运算符的执行(居然有人不知道)、finally的执行。

简单的说,try中的语句必然先执行,finally中的语句必然在try后面执行。唯一一个拗口的地方就是,如果都有return,那么try的return语句会被暂存,而去执行finally中的return!

但是,finally一旦return了,try..catch..finally就结束了。--try的return就被无视了。。。囧

第二个,头一次见到,根据回复的大牛说有可能考的是invokestatic指令?--JVM指令。

这个表示无能为力,只能先记住结论了,静态方法的调用,与对象无关,底层应该是根据对象的类型直接查找调用方法!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: