`

一道非常考察java基础的题目

 
阅读更多

请说出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基础编程题.doc

    马克思手稿中有一道趣味数学问题是Java基础编程题中的一道题目,它考察了程序员对数学运算和逻辑思维的理解。通过解决马克思手稿中的一道趣味数学问题,我们可以了解Java中的数学运算和逻辑思维等。 7. 正的九九...

    java_公司内测基础题(逻辑 数学 java基础 英语 等)

    总的来说,这份内测题集旨在全面评估应聘者的逻辑思维、数学运算、基础编程知识(虽然未提供具体Java题目)、以及英语能力。对于准备参加此类测试的人来说,需要强化这些方面的技能,尤其是逻辑推理和数学计算,同时...

    一道java题

    根据给定的信息,这是一道Java编程题目,其主要功能是将阿拉伯数字转换为中文大写数字,并且处理包括整数部分与小数部分在内的数值。下面将详细解析该题目中的核心知识点。 ### 核心知识点分析 #### 1. 数组与常量...

    java基础题-百马百担问题

    在Java编程领域,"百马百担问题"是一道经典的逻辑与算法题目,它源于中国古代的智力谜题,旨在考察程序员的逻辑思维能力和解决问题的能力。在这个问题中,我们需要使用Java来设计一个解决方案,以体现Java语言的基础...

    面试UC浏览器的一道处理字符串的题目(已提供答案)

    在Java编程语言中,字符串处理是基础且重要的技能,常常出现在面试题中,用来评估候选人的编程能力和逻辑思维。UC浏览器作为知名的手机浏览器产品,其技术团队对代码质量和性能的要求很高,因此这类问题可能旨在考察...

    蓝桥杯java历年真题及答案整理(共129道题目及答案)

    Java作为一门广泛应用于企业级开发和互联网应用的语言,自然成为了比赛的重要考察对象。这个压缩包文件"a4ff6f6364804121a5bd49665017b697"很可能包含了自赛事举办以来,历年的Java编程题目及对应的解答,共计129道...

    一道关于java异常处理的题目

    本题主要考察了Java异常处理的基础知识,包括基本的异常处理结构、自定义异常的创建和使用,以及如何在实际场景中抛出和捕获异常。理解这些概念对于编写健壮的Java程序至关重要。通过解决此类问题,开发者可以更好地...

    Java 后端面试题目参考

    Java后端面试是技术人才求职过程中的一道重要关卡,涉及到的知识点广泛而深入,涵盖了基础语法、数据结构、算法、并发编程、JVM优化、框架应用等多个领域。以下是一些可能在Java后端面试中出现的重点知识: 1. **...

    一道java课后题

    这道Java课后题在NetBeans环境中进行,主要考察的是Java编程基础,可能涉及类、对象、变量、方法、控制流程、数据类型等核心概念。NetBeans是一个流行的集成开发环境(IDE),它提供了代码编辑、调试、构建和部署等...

    迅雷面试笔试题目

    另一道题目要求在长度为10000的字符串中找出最长重复子串。这通常涉及复杂度为O(n!)的算法,但可以尝试用动态规划等方法降低算法复杂度。 - **动态规划**:将问题分解为子问题,并记录子问题的解,以减少重复计算。...

    2013宜搜java校招笔试内容

    本文将详细解析2013年宜搜公司针对Java开发的校园招聘笔试内容,主要涵盖Java语言的基础知识、核心概念以及编程题目。这份笔试题旨在考察应聘者对Java语言的理解深度和实际应用能力。 首先,单选题和多选题主要集中...

    阿里巴巴java笔试zz.

    1. 肯尼迪总统的讲话假设:这是一道逻辑推理题,与Java编程技术无关,但可以考察逻辑思维能力。肯尼迪的讲话假设美国石油公司只关心利润,不顾政府的指示。 2. 专利意识与企业行为:此题考察的是对企业专利工作的...

    Java逻辑基础题2-if和switch答案.docx

    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程序员的综合能力非常有帮助。在面试中,展示这些算法理解与应用能力,往往能让面试官对你的技术实力留下深刻印象。通过每天学习和练习...

    java4.0《移动正方形》

    Java 4.0《移动正方形》是一道典型的编程题目,主要考察的是对Java语言的掌握程度以及问题解决能力。这道题目可能涉及到以下几个关键的知识点: 1. **图形编程**:题目可能要求在控制台或者图形用户界面(GUI)上...

    2019年Java题库(学生版).pdf

    根据提供的文件信息,我们可以从这份2019年的Java题库中提炼出一系列重要的...通过以上分析,我们不仅了解了这些题目的答案,还深入学习了Java语言的一些基础概念和技术细节,这对于理解和掌握Java编程是非常有益的。

    阿里软件JAVA笔试题

    "阿里软件JAVA笔试题" 阿里软件JAVA笔试题是...阿里软件JAVA笔试题涵盖了 JAVA 语言、数据结构、算法、设计模式、数据库、JavaScript 等多方面的知识点,旨在考察应聘者的编程能力、逻辑思维能力和解决问题的能力。

    互联网软件开发(java)大作业题目备选参考.pdf

    这是一道涉及逻辑和算法设计的题目。可以通过深度优先搜索(DFS)或广度优先搜索(BFS)来解决。在每一步,尝试将一个数字移动到空位,检查是否符合目标状态。若找到解,展示移动过程。可以使用递归或队列来实现搜索...

    LeetCode_Java_Solutions

    在这个项目中,每一道LeetCode题目都有对应的Java代码实现,用户可以通过阅读和理解这些代码来学习和实践编程技巧。 首先,我们要明白Java作为一种面向对象的语言,其在解决算法问题时有着强大的支持。通过这个项目...

Global site tag (gtag.js) - Google Analytics