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

本文共 1145 字,大约阅读时间需要 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指令。

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

 

转载于:https://www.cnblogs.com/larryzeal/p/5626410.html

你可能感兴趣的文章
html中文件类型的accept属性有哪些
查看>>
JS及JQuery对Html内容编码,Html转义
查看>>
Coursera公开课笔记: 斯坦福大学机器学习第十课“应用机器学习的建议(Advice for applying machine learning)”...
查看>>
竞价广告系统-广告检索
查看>>
强哥PHP面向对象学习笔记
查看>>
[转]基于.NET平台常用的框架整理
查看>>
Symbian (Read Inbox)读取收件箱的内容
查看>>
良好的编程规范
查看>>
struts2 入门
查看>>
.net 编译原理
查看>>
mean 快速开发和现有技术的对比分析
查看>>
Metro Style app :浏览器扩展
查看>>
linux的kernel是怎样工作的(TI_DM36X_ARM系统)(1)
查看>>
[luogu4310] 绝世好题 (递推)
查看>>
[luogu3203 HNOI2010] 弹飞绵羊 (分块)
查看>>
-Dmaven.multiModuleProjectDirectory system propery is not set.
查看>>
Python2 unichr() 函数
查看>>
Python 字典 copy()方法
查看>>
Minimum Path Sum
查看>>
Remove Duplicates from Sorted Array II
查看>>