Java中try...finally面试题

本文探讨了Java中try...finally执行机制,通过实例展示了System.exit()如何影响finally块的执行,并提出一道面试题,分析了在finally块中修改变量值对返回结果的影响。深入理解这些概念对于Java程序员至关重要。
摘要由CSDN通过智能技术生成

提示:以下代码可能会让你对自己的学习成果感到怀疑


请做好准备!!哈哈

先提前准备一些知识点: 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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值