博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 关于finally、static
阅读量:6294 次
发布时间:2019-06-22

本文共 1092 字,大约阅读时间需要 3 分钟。

 

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

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

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

 

转载地址:http://lxpta.baihongyu.com/

你可能感兴趣的文章
UWA平台新增【UI模块】和【粒子系统】检测功能!
查看>>
Oracle Study之--Oracle等待事件(2)
查看>>
Android开发者指南(15) —— Managing Virtual Devices
查看>>
查找、替换与定位
查看>>
解决莫名其妙出现connection closed的错误
查看>>
Linux多线程实践(3) --线程属性
查看>>
Catalyst3550交换机配置三层接口
查看>>
Elixir语言
查看>>
Java Calendar 类的时间操作
查看>>
esxi所连交换机划vlan导致vm不能通讯
查看>>
关于CE端口线路整改的建议
查看>>
如何禁止使用本地administrator进行共享连接
查看>>
用python解析html[SGMLParser]
查看>>
hive执行流程(3)-Driver类分析1Driver类整体流程
查看>>
Android开发学习笔记:对话框浅析
查看>>
Ajax学习-Ajax简介
查看>>
下载备忘:甘特图实现的代码
查看>>
Linux文本比较命令:diff
查看>>
redux-form的学习笔记二--实现表单的同步验证
查看>>
小评 XenServer 6.0功能
查看>>