`

java陷阱-------try中的return

    博客分类:
  • J2SE
阅读更多
public class Test {

	public static void main(String[] args) {
		System.out.println(decision());
	}
	
	public static boolean decision(){
		try{
			return true;
		}finally{
			return false;
		}
	}
}

打印的是什么呢?

打印: false;
因为finally只要不中断程序就一定会执行。。。。
栈中先放入true,然后栈中再放入false,然后就返回栈中的第一个了


public class Test {

	public static void main(String[] args) {
		decision();
	}
	
	public static void  decision(){
		try{
			System.out.println("try 中");
			System.exit(0);
		}finally{
			System.out.println("finally 中");
		}
	}
}

打印: try中。。。

因为程序中断了,当然不执行finally


public int getName1(){
    	try{
    		System.out.println("try");
    		return 1;
    	}finally{
    		System.out.println("finally");
    		
    	}
}
结果:
try
finally
1

//------------------------------------------------------
public int getName1(){
    	try{
    		System.out.println("try");
    		return 1;
    	}finally{
    		System.out.println("finally");
    		return 2;
    	}
}

结果:
try
finally
2

Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。


分享到:
评论

相关推荐

    java陷阱--面试(题集)杂谈

    键字)用于声明变量、方法或类,表示不可变或最终...以上是Java面试中常见的问题及答案,涵盖了Java的基础语法、面向对象、集合、多线程、异常处理等多个方面。掌握这些知识点对于成为一名合格的Java开发者至关重要。

    java解惑 - 最后的笑声

    如果finally块包含return语句,那么它会覆盖try或catch块中的return,导致原本的返回值丢失。理解这一点对于避免代码逻辑错误至关重要。 其次,源码分析是Java学习的重要部分。博主可能在博文中分享了一些对Java...

    java常见疑惑与陷阱

    ### Java常见疑惑与陷阱 #### 一、Java基础的常见陷阱 **1.1 不一样的数字的宽类型和窄类型** 在Java中,当我们处理不同的数值类型时,可能会遇到一些意料之外的行为。例如,当一个`byte`类型的数据与一个`int`...

    java陷阱一箩筐 面试笔试试题

    【Java 陷阱与面试知识点详解】 1. **final, finally, finalize**: - `final` 关键字用于声明变量、方法或类为不可变,防止被修改。 - `finally` 通常与 `try-catch` 结构一起使用,无论异常是否发生,finally ...

    Java陷阱一箩筐笔试题

    Java编程语言中包含了许多陷阱和细节,这些都是面试官在寻找潜在候选人时经常提出的知识点。以下是一些关于Java面试题的详细解释: 1. **final, finally, finalize的区别**: - `final` 用于声明不可变变量、表示...

    Java陷阱一箩筐.doc

    【Java陷阱一箩筐】 Java 语言中包含许多微妙的概念和陷阱,对于开发者来说,理解这些概念至关重要。以下是一些常见的 Java 面试题及详细解释: 1. **final, finally, finalize的区别**: - `final`:用于声明...

    JAVA面试陷阱(网摘)

    即使在`try`或`catch`块中有`return`语句,`finally`块中的代码也会被执行。 - `finalize()`:这是Object类中的一个方法,用于在对象被垃圾收集器回收前进行清理工作。通常,不应直接使用`finalize()`,因为它的...

    避坑手册 - JAVA编码中容易踩坑的十大陷阱.doc

    在finally块中释放资源(如关闭文件流或数据库连接)是良好的编程习惯,即使在try或catch块中有return语句,finally块仍然会执行。 了解并避免这些陷阱可以帮助你编写更健壮、更易于维护的Java代码。在实际开发中...

    Java 面试中的陷阱

    在Java面试中,面试官经常会提出一些看似简单但实则陷阱重重的问题,旨在考察候选人的基础知识、理解深度以及解决问题的能力。以下是对这些知识点的详细解释: 1. **final, finally, finalize的区别**: - `final`...

    Java面试中的陷阱

    ### Java面试中的陷阱详解 #### 一、final, finally, finalize 的区别 1. **final**:在Java中,`final`是一个关键字,用于声明一个不可更改的对象或变量。如果一个类被声明为final,那么它不能被继承;如果一个...

    java面试陷阱

    ### Java面试陷阱详解 #### 一、final, finally, finalize的区别 在Java中,`final`, `finally`, 和 `finalize` 这三个关键字虽然只相差一个字母,但在用途上却有着天壤之别。 - **final**: 这个关键字主要用于...

    java面试陷阱集合

    27. **try-finally**:finally块中的代码总会执行,无论是否有return,它在return语句之前执行。 28. **效率计算2乘以8**:最简单的方法是直接赋值,`int result = 2 * 8;`。 29. **对象值相同但hash code不同**:...

    Java中常见的陷阱题及答案

    下面我们就来深入探讨一下Java中常见的陷阱及其解决方案。 1. **找奇数的陷阱** ```java public static boolean isOdd(int i){ return i % 2 == 1; } ``` 这段代码用来判断一个整数是否为奇数,但存在一个...

    java puzzles.pdf

    - 结论:在Java中,`finally`块中的`return`语句会覆盖`try`或`catch`块中的`return`语句。 - **解决方案**:通常情况下,不需要在`finally`块中添加`return`语句。如果确实需要改变返回值,可以考虑其他方法,如...

    java语言精粹

    在《Java语言精粹》这本书中,作者Jim深入探讨了Java语言及其环境中的诸多亮点。其中一个关键主题是异常处理。异常处理是Java编程的一个核心概念,它对于确保程序的健壮性和可维护性至关重要。然而,由于其独特的...

    java程序员面试须知

    ### Java程序员面试须知 ...以上知识点不仅涵盖了Java基础语法、面向对象编程、集合框架、异常处理、线程控制等关键领域,还深入探讨了面试中常见的陷阱和细节,有助于Java程序员全面准备面试,提升专业技能。

    java面试宝典

    即使`try`块中有`return`语句,`finally`块中的代码也会被执行,无论是在`return`之前还是之后。通常情况下,`finally`块会在`return`语句之前执行。 **1.38 异常处理机制** Java的异常处理机制主要包括: - `...

    详解Java异常处理最佳实践及陷阱防范

    这会导致覆盖`try`块中的`return`,可能导致预期之外的结果。如果`finally`块中包含`return`,可能会隐藏真正的问题,使得错误排查变得困难。 2. **陷阱2**:在`try`块中进行锁操作。如果锁的获取(如使用`...

    程序员面试宝典(变态级Java程序员面试32问)pdf

    `finally`块一定会执行,即使`try`块中有`return`语句,`finally`块会在`return`之前执行。 ### 28. 最有效率的乘法算法 对于特定数字的乘法,可以直接使用位运算,如`2 * 8`可以通过`2 快速计算。 ### 29. ...

    finally结构的注意点(一)

    1. **返回值**:如果 `finally` 块包含 `return` 语句,那么它将覆盖 `try` 或 `catch` 块中的任何 `return` 语句。这意味着最后的返回值是由 `finally` 块决定的。 2. **跳转语句**:即使使用了 `break`、`...

Global site tag (gtag.js) - Google Analytics