请说出main()方法的执行结果,以及每个方法执行完之后的打印结果,以及变量 i 最后的值是多少?
代码如下:
public class Test { public static int getI1() { int i = 0; try { i++; throw new RuntimeException(); } catch (Exception e) { return i++; } finally { return i++; } } public static int getI2() { int i = 0; try { i++; throw new RuntimeException(); } catch (Exception e) { return i++; } finally { i++; } } public static int getI3() { int i = 0; try { i++; throw new RuntimeException(); } catch (Exception e) { i++; return i++; } finally { i++; } } public static int getI4() { int i = 0; try { i = i + 1; throw new RuntimeException(); } catch (Exception e) { i++; return i++; } finally { i++; return i++; } } public static int getI5() { int i = 0; try { i = i + 1; throw new RuntimeException(); } catch (Exception e) { i++; return i++; } finally { i++; } } public static int getI6() { int i = 0; try { i = i + 1; throw new RuntimeException(); } catch (Exception e) { i++; return i++; } finally { return i++; } } public static int getI7() { int i = 0; return (i++ + i++); } public static int getI8() { int i = 0; return ((i++) + (i = i + 1) + (i++)); } public static void main(String[] args) { System.out.println("getI1()=======" + Test.getI1()); System.out.println("getI2()=======" + Test.getI2()); System.out.println("getI3()=======" + Test.getI3()); System.out.println("getI4()=======" + Test.getI4()); System.out.println("getI5()=======" + Test.getI5()); System.out.println("getI6()=======" + Test.getI6()); System.out.println("getI7()=======" + Test.getI7()); System.out.println("getI8()=======" + Test.getI8()); } }
此题考察java的很多的基础知识:++、try catch finally语句、i++与i=i+1的区别、运算符的优先级、return语句的原理等。
答案:
----Test.getI1()打印结果是:2,最后的i值是2。
----Test.getI2()打印结果是:1,最后的i值是3。
----Test.getI3()打印结果是:2,最后的i值是4。
----Test.getI4()打印结果是:4,最后的i值是4。
----Test.getI5()打印结果是:2,最后的i值是4。
----Test.getI6()打印结果是:3,最后的i值是3。
----Test.getI7()打印结果是:1,最后的i值是2。
----Test.getI8()打印结果是:4,最后的i值是3。
结论:
java 的异常处理中:在不抛出异常的情况下,程序执行完 try 里面的代码块之后,该方法并不会立即结束,而是继续试图去寻找该方法有没有 finally 的代码块:
如果没有 finally 代码块,整个方法在执行完 try 代码块后返回相应的值来结束整个方法;
如果有 finally 代码块,此时程序执行到 try 代码块里的 return 语句之时并不会立即执行 return,而是先去执行 finally 代码块里的代码,
若 finally 代码块里没有 return 或没有能够终止程序的代码,程序将在执行完 finally 代码块代码之后再返回 try 代码块执行 return 语句来结束整个方法;
若 finally 代码块里有 return 或含有能够终止程序的代码,方法将在执行完 finally 之后被结束,不再跳回 try 代码块执行 return。
相关推荐
马克思手稿中有一道趣味数学问题是Java基础编程题中的一道题目,它考察了程序员对数学运算和逻辑思维的理解。通过解决马克思手稿中的一道趣味数学问题,我们可以了解Java中的数学运算和逻辑思维等。 7. 正的九九...
根据给定的信息,这是一道Java编程题目,其主要功能是将阿拉伯数字转换为中文大写数字,并且处理包括整数部分与小数部分在内的数值。下面将详细解析该题目中的核心知识点。 ### 核心知识点分析 #### 1. 数组与常量...
在Java编程领域,"百马百担问题"是一道经典的逻辑与算法题目,它源于中国古代的智力谜题,旨在考察程序员的逻辑思维能力和解决问题的能力。在这个问题中,我们需要使用Java来设计一个解决方案,以体现Java语言的基础...
在Java编程语言中,字符串处理是基础且重要的技能,常常出现在面试题中,用来评估候选人的编程能力和逻辑思维。UC浏览器作为知名的手机浏览器产品,其技术团队对代码质量和性能的要求很高,因此这类问题可能旨在考察...
Java作为一门广泛应用于企业级开发和互联网应用的语言,自然成为了比赛的重要考察对象。这个压缩包文件"a4ff6f6364804121a5bd49665017b697"很可能包含了自赛事举办以来,历年的Java编程题目及对应的解答,共计129道...
本题主要考察了Java异常处理的基础知识,包括基本的异常处理结构、自定义异常的创建和使用,以及如何在实际场景中抛出和捕获异常。理解这些概念对于编写健壮的Java程序至关重要。通过解决此类问题,开发者可以更好地...
Java后端面试是技术人才求职过程中的一道重要关卡,涉及到的知识点广泛而深入,涵盖了基础语法、数据结构、算法、并发编程、JVM优化、框架应用等多个领域。以下是一些可能在Java后端面试中出现的重点知识: 1. **...
这道Java课后题在NetBeans环境中进行,主要考察的是Java编程基础,可能涉及类、对象、变量、方法、控制流程、数据类型等核心概念。NetBeans是一个流行的集成开发环境(IDE),它提供了代码编辑、调试、构建和部署等...
另一道题目要求在长度为10000的字符串中找出最长重复子串。这通常涉及复杂度为O(n!)的算法,但可以尝试用动态规划等方法降低算法复杂度。 - **动态规划**:将问题分解为子问题,并记录子问题的解,以减少重复计算。...
A+B问题是一个非常基础的编程题目,它考察的是对程序中基本数据类型和运算符的使用。对于初学者而言,这是一道很好的入门题目,通过它可以帮助初学者建立编程思维,理解程序运行的基本逻辑。 通过对蓝桥杯历年真题...
本文将详细解析2013年宜搜公司针对Java开发的校园招聘笔试内容,主要涵盖Java语言的基础知识、核心概念以及编程题目。这份笔试题旨在考察应聘者对Java语言的理解深度和实际应用能力。 首先,单选题和多选题主要集中...
4. 题目4:这是一道简单的算术题。输入1,`x=1`,则`x+1`为2,`x*3`为3,`x/2`为0.5,整数除法向下取整,所以`x/2`为0,`x%3`为1,最后的加法得到1。 5. 题目5:考察了switch语句的用法。`show()`方法会被调用两次...
这些经典算法题目的解决,涉及到递归、循环、数学知识和逻辑思维,对于提升JAVA程序员的综合能力非常有帮助。在面试中,展示这些算法理解与应用能力,往往能让面试官对你的技术实力留下深刻印象。通过每天学习和练习...
Java 4.0《移动正方形》是一道典型的编程题目,主要考察的是对Java语言的掌握程度以及问题解决能力。这道题目可能涉及到以下几个关键的知识点: 1. **图形编程**:题目可能要求在控制台或者图形用户界面(GUI)上...
根据提供的文件信息,我们可以从这份2019年的Java题库中提炼出一系列重要的...通过以上分析,我们不仅了解了这些题目的答案,还深入学习了Java语言的一些基础概念和技术细节,这对于理解和掌握Java编程是非常有益的。
通过上述分析,我们不仅深入了解了Java上机面试的常见题目——字符串截取的解决方案,还掌握了处理多字节字符的关键技术。这种类型的题目不仅考验应聘者的基础知识,更对其逻辑思维和问题解决能力提出了挑战。对于...
"阿里软件JAVA笔试题" 阿里软件JAVA笔试题是...阿里软件JAVA笔试题涵盖了 JAVA 语言、数据结构、算法、设计模式、数据库、JavaScript 等多方面的知识点,旨在考察应聘者的编程能力、逻辑思维能力和解决问题的能力。
这是一道涉及逻辑和算法设计的题目。可以通过深度优先搜索(DFS)或广度优先搜索(BFS)来解决。在每一步,尝试将一个数字移动到空位,检查是否符合目标状态。若找到解,展示移动过程。可以使用递归或队列来实现搜索...
在这个项目中,每一道LeetCode题目都有对应的Java代码实现,用户可以通过阅读和理解这些代码来学习和实践编程技巧。 首先,我们要明白Java作为一种面向对象的语言,其在解决算法问题时有着强大的支持。通过这个项目...
这些题目涵盖了Java语言的基础、进阶以及面向对象设计等多个方面,旨在测试应聘者的编程基础、问题解决能力以及对Java特性的理解和应用。 首先,Java基础知识是每个Java开发者必须掌握的,包括但不限于:变量、数据...