`

关于finally中赋值

 
阅读更多

今天看到一个有意思的程序,写下来

public class FinallyTest {
    
private static int test() {
        
int i=1;
        
try {
            
i=2;
            
return i;
        
} catch (Exception e) {
            
i = 3;
            
return i;
        
} finally {
            
i = 4;
        
}
    
}
    
public static void main(String[] args){
        
FinallyTest finallyTest = new FinallyTest ();
        
System.out.println("i=" + finallyTest.test());
    
}
}

运行结果是

i=2

为什么呢,不是明明在finally中赋值了i=4吗?
答案是:
(more…)

分享到:
评论

相关推荐

    final, finally, finalize的区别

    在Java编程语言中,"final", "finally", 和 "finalize" 这三个关键字有着截然不同的含义和用途,它们各自在程序设计的不同层面扮演着重要角色。深入理解这些概念对于编写高效、健壮的Java代码至关重要。 ### final ...

    java面试题 谈谈final, finally, finalize的区别

    在Java编程语言中,`final`, `finally`, 和 `finalize` 是三个非常重要的关键字,它们各自扮演着不同的角色,尤其在处理程序的可预测性、数据的不可变性和垃圾回收等方面。下面将详细阐述这三个关键字的区别及其应用...

    详解Java编程中final,finalize,finally的区别

    Java编程中的`final`, `finalize`, 和`finally`是三个重要的关键字,它们各自在不同的场景下发挥着关键作用。理解这三个关键字的区别对于Java开发者来说至关重要,尤其是在面试中常常会被问及。 首先,`final`是一...

    浅谈Java中return和finally的问题

    这段代码中,`finally` 语句块只有变量赋值 `i=50;`,没有 `return` 语句。尽管在 `finally` 里改变了 `i` 的值,但因为 `return` 在 `finally` 之后,所以返回的值仍然是 `try` 块中计算好的 `i` 的原始值(即 10)...

    3谈谈final、finally、finaliz1

    即使在try块中抛出异常或者通过return、System.exit()等方式退出,finally块内的代码依然会被执行。在Java 7及更高版本中,try-with-resources语句简化了资源管理,可以自动关闭实现了AutoCloseable接口的资源,这比...

    dotnet C# 如果在构造函数抛出异常 是否可以拿到对象赋值的变量.rar

    标题中的“dotnet C# 如果在构造函数抛出异常 是否可以拿到对象赋值的变量”是一个关于C#编程语言中的构造函数和异常处理的问题。在C#中,构造函数是用于初始化新创建的对象的特殊方法。当在构造函数中抛出异常时,...

    第3讲 谈谈final、finally、 finalize有什么不同1

    【Java核心技术】final、finally和finalize是Java编程中三个重要的关键字,它们各自有着独特的功能和用法。 **final关键字** final在Java中扮演着“不可改变”的角色。它可以用来修饰类、方法和变量: 1. **修饰类...

    《剑指offer》Java深入理解final、finally、finalize.pdf

    Java编程中的`final`、`finally`和`finalize`关键字对于理解Java程序的运行机制至关重要。它们各自有独特的用途和特点。 首先,`final`关键字是Java中的一个多面手,它可以用于修饰类、方法和变量。当`final`用于...

    java中final与finally的使用介绍

    在Java编程语言中,`final` 和 `finally` 是两个重要的关键字,它们分别有不同的用途和含义。下面将详细解释这两个关键字的功能以及它们在Java中的应用。 1. `final` 关键字: - **修饰成员变量**:`final` 可以...

    Suraj-Java中的赋值分配

    10. **异常处理中的赋值**:在`try-catch`块中,可以使用`finally`来确保某些变量的值在异常发生后仍然得到更新: ```java try { // ... } finally { variable = importantValue; // 这里的赋值将在任何情况下...

    python的变量与赋值详细分析

    python的变量与赋值 1.变量的命名规则 变量其实通过一个标记调用内存中的值,而变量名就是这个标记的名称,但是万一这个标记已经被提前占用或者解释器认为这个标记是不合法的,那么就会报错。下面总结了一下变量的...

    java 基础之final、finally和finalize的区别

    Final、finally 和 finalize 是 Java 语言中三个常用的关键字,然而它们的作用和用法却有很大的区别。下面我们将详细介绍这三个关键字的区别。 Final Final 是一个访问修饰符,用于修饰类、方法和变量。 Final ...

    简单谈谈java中final,finally,finalize的区别

    Java中的`final`、`finally`和`finalize`都是关键字,但它们的作用和用途各不相同,对于初学者来说,理解这些概念可能会有些困难。让我们逐一解析它们。 **final** `final`是一个修饰符,主要用于以下几个方面: ...

    dotnet C# 给结构体字段赋值非线程安全.rar

    标题提到的"dotnet C# 给结构体字段赋值非线程安全"涉及到的是C#编程中的线程同步和结构体(struct)的特性。下面我们将深入探讨这个问题。 线程安全是指当多个线程同时访问一个对象或数据结构时,程序仍能正确执行...

    finally 一定会执行(实例代码)

    在Java编程语言中,`finally`块是一个非常重要的概念,它与`try`和`catch`块一起用于处理异常情况。`finally`块确保无论是否发生异常,其中的代码都会被执行。下面我们将深入探讨`finally`块的工作原理,并通过提供...

    Vue通过getAction的finally来最大程度避免影响主数据呈现问题

    为了解决这个问题,首先尝试在`getAction`的`then`回调中给`userName`赋值,然后设置表单字段。这种方式虽然能解决问题,但如果`getAction`出现错误,会导致整个页面无法正常渲染。 在了解到`getAction`等函数支持`...

    java易错点整理笔记

    try-catch-finally语句中,只要try中的语句执行,finally就会执行。如果try中的语句没有执行,则finally中的语句也不执行。 8. 初始化块和构造方法 父类会在子类之前被加载(初始化块和构造方法)。初始化块会在...

    Android源码中final关键字的用法及final,finally,finalize的区别

    - 用于try-catch-finally语句结构中,无论是否发生异常,finally块中的代码都会被执行。这确保了程序中重要的清理工作(如资源释放)能够始终得以执行。 3. Finalize: - 是Object类中的一个方法,关联于垃圾回收...

    Java面试题及答案-java面试题

    Java 中的 final、finally 和 finalize 关键字有什么区别? final:当用“final”关键字声明一个变量时,它的值一旦被赋值就不能改变。当使用“final”关键字声明方法时,它不能在子类中被覆盖。当用“final”...

    java基础题目

    根据 Java 语言规范,try 块中的代码首先执行,如果出现异常,则 catch 块中的代码执行,然后 finally 块中的代码执行。因此,在这个示例中,输出结果是 "finally"。 Sample2:继承和构造函数 在 Sample2 中,我们...

Global site tag (gtag.js) - Google Analytics