Java 关于finallystatic

Posted LarryZeal

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 关于finallystatic相关的知识,希望对你有一定的参考价值。

 

论坛上看到的两道题目,如下:

//为啥运行结果是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指令。

这个表示无能为力,只能先记住结论了,静态方法的调用,与对象无关,底层应该是根据对象的类型直接查找调用方法!!!

 

以上是关于Java 关于finallystatic的主要内容,如果未能解决你的问题,请参考以下文章

关于代码片段的时间复杂度

为 Blogger 上的博客格式化代码片段 [关闭]

关于片段生命周期

关于js----------------分享前端开发常用代码片段

关于在各浏览器中插入音频文件的html代码片段

java获取随机时间的源码片段