Java 关于finally、static
2016-06-29 12:11
363 查看
论坛上看到的两道题目,如下:
第一个不用多说,考查的是后缀自增/减运算符的执行(居然有人不知道)、finally的执行。
简单的说,try中的语句必然先执行,finally中的语句必然在try后面执行。唯一一个拗口的地方就是,如果都有return,那么try的return语句会被暂存,而去执行finally中的return!
但是,finally一旦return了,try..catch..finally就结束了。--try的return就被无视了。。。囧
第二个,头一次见到,根据回复的大牛说有可能考的是invokestatic指令?--JVM指令。
这个表示无能为力,只能先记住结论了,静态方法的调用,与对象无关,底层应该是根据对象的类型直接查找调用方法!!!
//为啥运行结果是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指令。
这个表示无能为力,只能先记住结论了,静态方法的调用,与对象无关,底层应该是根据对象的类型直接查找调用方法!!!
相关文章推荐
- Spring+SpringMVC 文件批量同步上传
- spring 3 bean配置--注入属性配置细节(1)
- java中的四舍五入的问题
- 待补充:java.math.BigDecimal.toPlainString() 详解
- 算法-百鸡问题 Java
- Java基础题
- Spring 注解配置(2)——@Autowired
- spring mvc 单元测试示例
- Java中单例模式的七种写法
- Servlet的运行过程
- JAVA读写文件方法总结
- 浅谈java中异步多线程超时导致的服务异常
- java之synchronized
- eclipse中导入外部jar包
- Java基础知识强化106:Java中 int 的各进制之间的转换
- javaweb学习路之四--cxf发布Webservice
- Java验证码的jar制作
- java线程
- java sqlxml (有错误,sqlite3可能不支持xml类型)
- 获取java web项目里面所有的properties文件并组装在一起,使用方便,配置简单