提示:以下代码可能会让你对自己的学习成果感到怀疑
请做好准备!!哈哈
先提前准备一些知识点: java语法规则(有一些规则是不能破坏的) ①方法体中的代码必须遵循自上而下顺序依次执行。②return语句一旦执行,整个方法必须结束。最后会用到提示:开始入坑
一、try…finallyz执行机制
代码如下(示例):
public class Test {
public static void main(String[] args){
System.out.println("main执行了.....");//第一步
doSome();
System.out.println("拜拜");//第五步
}
public static void doSome(){
try{
System.out.println("try执行.....");//第二步
return ; //第四步
}finally{ //放在finally的语句块最后执行并且一定会被执行
System.out.println("finally....");//第三步
}
}
}
放在finally的语句块最后执行并且一定会被执行,先简单了解一下运行机制,后面才好玩
二.准备入坑
代码如下(示例):
public class Test {
public static void main(String[] args){
System.out.println("main执行了.....");//第一步
doSome();//调用方法
System.out.println("拜拜");
}
public static void doSome(){
try{
System.out.println("try执行.....");//第二步
System.exit(0) ; //强制退出JVM //第三步 没了
}finally{ //放在finally的语句块最后执行并且一定会被执行
System.out.println("finally....");
}
}
}
发现Sysetm.exit()这个比fnially更厉害直接退出JVM。程序结束。下面开始面试题,最好玩的来了。。。。。。
三.入坑开始(面试题)
提示:放在finally的语句块最后执行并且一定会被执行,在当前依然成立。。。。。。
提示:最后输出:100
public class ExceptionTest06 {
public static void main(String[] args){
int result = m();
System.out.println(result); //输出:100
}
public static int m(){
int i = 100; //第一步
try{
return i; //第三步
}finally{
i++; //第二步
}
}
}
好好想再看四。
四:解析
在JVM中的m()方法的实际运行步骤是:
public static int m(){
int i = 100 ;
int j = i ;
i++;
return j;
}