zoukankan      html  css  js  c++  java
  • Java 关于finally、static

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

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

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

  • 相关阅读:
    PDO预处理语句规避SQL注入攻击
    单例模式
    接口测试框架-[pytest+requests+excel]读取excel表格+requests参数化+pytest测试报告
    git 常用命令
    测试基础
    jmeter 安装
    软件测试常用网址
    MAC下安装配置Tomcat
    python 第六十二章 Django orm 跨表查询
    python 第六十二章 Django cookie和session
  • 原文地址:https://www.cnblogs.com/larryzeal/p/5626410.html
Copyright © 2011-2022 走看看