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开发者至关重要。
如果finally块包含return语句,那么它会覆盖try或catch块中的return,导致原本的返回值丢失。理解这一点对于避免代码逻辑错误至关重要。 其次,源码分析是Java学习的重要部分。博主可能在博文中分享了一些对Java...
### Java常见疑惑与陷阱 #### 一、Java基础的常见陷阱 **1.1 不一样的数字的宽类型和窄类型** 在Java中,当我们处理不同的数值类型时,可能会遇到一些意料之外的行为。例如,当一个`byte`类型的数据与一个`int`...
【Java 陷阱与面试知识点详解】 1. **final, finally, finalize**: - `final` 关键字用于声明变量、方法或类为不可变,防止被修改。 - `finally` 通常与 `try-catch` 结构一起使用,无论异常是否发生,finally ...
Java编程语言中包含了许多陷阱和细节,这些都是面试官在寻找潜在候选人时经常提出的知识点。以下是一些关于Java面试题的详细解释: 1. **final, finally, finalize的区别**: - `final` 用于声明不可变变量、表示...
【Java陷阱一箩筐】 Java 语言中包含许多微妙的概念和陷阱,对于开发者来说,理解这些概念至关重要。以下是一些常见的 Java 面试题及详细解释: 1. **final, finally, finalize的区别**: - `final`:用于声明...
即使在`try`或`catch`块中有`return`语句,`finally`块中的代码也会被执行。 - `finalize()`:这是Object类中的一个方法,用于在对象被垃圾收集器回收前进行清理工作。通常,不应直接使用`finalize()`,因为它的...
在finally块中释放资源(如关闭文件流或数据库连接)是良好的编程习惯,即使在try或catch块中有return语句,finally块仍然会执行。 了解并避免这些陷阱可以帮助你编写更健壮、更易于维护的Java代码。在实际开发中...
在Java面试中,面试官经常会提出一些看似简单但实则陷阱重重的问题,旨在考察候选人的基础知识、理解深度以及解决问题的能力。以下是对这些知识点的详细解释: 1. **final, finally, finalize的区别**: - `final`...
### Java面试中的陷阱详解 #### 一、final, finally, finalize 的区别 1. **final**:在Java中,`final`是一个关键字,用于声明一个不可更改的对象或变量。如果一个类被声明为final,那么它不能被继承;如果一个...
### Java面试陷阱详解 #### 一、final, finally, finalize的区别 在Java中,`final`, `finally`, 和 `finalize` 这三个关键字虽然只相差一个字母,但在用途上却有着天壤之别。 - **final**: 这个关键字主要用于...
27. **try-finally**:finally块中的代码总会执行,无论是否有return,它在return语句之前执行。 28. **效率计算2乘以8**:最简单的方法是直接赋值,`int result = 2 * 8;`。 29. **对象值相同但hash code不同**:...
下面我们就来深入探讨一下Java中常见的陷阱及其解决方案。 1. **找奇数的陷阱** ```java public static boolean isOdd(int i){ return i % 2 == 1; } ``` 这段代码用来判断一个整数是否为奇数,但存在一个...
- 结论:在Java中,`finally`块中的`return`语句会覆盖`try`或`catch`块中的`return`语句。 - **解决方案**:通常情况下,不需要在`finally`块中添加`return`语句。如果确实需要改变返回值,可以考虑其他方法,如...
在《Java语言精粹》这本书中,作者Jim深入探讨了Java语言及其环境中的诸多亮点。其中一个关键主题是异常处理。异常处理是Java编程的一个核心概念,它对于确保程序的健壮性和可维护性至关重要。然而,由于其独特的...
### Java程序员面试须知 ...以上知识点不仅涵盖了Java基础语法、面向对象编程、集合框架、异常处理、线程控制等关键领域,还深入探讨了面试中常见的陷阱和细节,有助于Java程序员全面准备面试,提升专业技能。
即使`try`块中有`return`语句,`finally`块中的代码也会被执行,无论是在`return`之前还是之后。通常情况下,`finally`块会在`return`语句之前执行。 **1.38 异常处理机制** Java的异常处理机制主要包括: - `...
这会导致覆盖`try`块中的`return`,可能导致预期之外的结果。如果`finally`块中包含`return`,可能会隐藏真正的问题,使得错误排查变得困难。 2. **陷阱2**:在`try`块中进行锁操作。如果锁的获取(如使用`...
`finally`块一定会执行,即使`try`块中有`return`语句,`finally`块会在`return`之前执行。 ### 28. 最有效率的乘法算法 对于特定数字的乘法,可以直接使用位运算,如`2 * 8`可以通过`2 快速计算。 ### 29. ...
1. **返回值**:如果 `finally` 块包含 `return` 语句,那么它将覆盖 `try` 或 `catch` 块中的任何 `return` 语句。这意味着最后的返回值是由 `finally` 块决定的。 2. **跳转语句**:即使使用了 `break`、`...