【Java 面试合集】final 以及finally 不同

news2025/2/26 3:45:40

final 以及finally 不同

1. 概述

嗨,大家好【Java 面试合集】又来了。今天给大家分享的主题是final 以及finally 不同.
很简单,但是确实很细节哦,好了废话不多说,让我们开始吧

2. final

首先我们要知道final 是一个修饰符,可以修饰属性,方法,类等

2.1 修饰成员属性

  • 修饰基本数据类型后,不能再次修改
  • 修饰引用数据类型后,不能修引用。但是可以修改对象内容

基本数据类型

public class Test001 {
	final int age = 10;
    age = 20; // 不能进行修改
}

一旦使用final 修饰基本数据类型后,不能再次修改。

在这里插入图片描述

引用数据类型

public class Test001 {
    final Person p = new Person();

    public void test002() {
        p = new Person(); // 报错。
        p.name = "20"; // 但是可以这样赋值
    }
}

2.2 修饰类

使用修饰符final 修饰类后,类不能被继承。

final class Parent001 {
}

public class Test002 extends Parent001 {
}

在这里插入图片描述

2.3 修饰方法

使用修饰符final 修饰方法后,方法不能被重写

class Parent001 {
    public final void test001() {

    }
}

public class Test002 extends Parent001 {
    
    public void test001() {

    }
}

在这里插入图片描述

2.4 修饰参数列表

修饰的参数列表,跟修饰成员属性保持一致的

public class Test003 {
    public static void main(String[] args) {
        test001(1, 2);
    }
    public static void test001(final int a, int b) {
        a = 2; // 不能重新赋值
        b = 3;
    }
}

2.5 常用方式

一般跟static 结合使用。用来给全系统提供常用。

public final class Math {
	public static final double PI = 3.14159265358979323846;
}

3. finally

  • 其实是try catch finally 关键字。其大概的含义是:无论是否异常,都会执行finally
  • finally 代码块 会在try 代码块的return之前执行。
  • 如果finally代码块进行返回了,try 代码块中就无法返回了

实例1

public class Test004 {
    public static void main(String[] args) {
        System.out.println(test001());
    }

    public static String test001() {
        try {
            System.out.println("test001-1");
            return "test001-1-r";
        } finally {
            System.out.println("test001-2");
            return "test001-2-r";
        }
    }
}

上述代码的打印结果如下:

# test001-1
# test001-2
# test001-2-r

通过上述示例,如果finally代码块返回值后,try 代码块就不会返回了

实例2

public class Test004 {
    public static void main(String[] args) {
        System.out.println(test001());
    }

    public static String test001() {
        try {
            System.out.println("test001-1");
            return "test001-1-r";
        } finally {
            System.out.println("test001-2");
        }
    }
}

上述代码打印结果如下:

// test001-1
// test001-2
// test001-1-r

上述示例代码说明:如果try代码块正常的话,finally 代码块是在return 之前执行的。

4. 总结

其实final 以及finally除了书写相似外,毛关系没有

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/361646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WordPress主题:知更鸟Begin5.2免授权版

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 HTML5CSS3响应式设计兼容IE8、Firefox、Chrome等现代浏览器。杂志布局、图片布局和博客布局后台切换 Wordpress主题 知更鸟Begin主题 无授权无加密独立页面模板 博客布局、随机文章、友…

总结:电容在电路35个基本常识

1 电压源正负端接了一个电容,与电路并联,用于整流电路时,具有很好的滤波作用,当电压交变时,由于电容的充电作用,两端的电压不能突变,就保证了电压的平稳。 当用于电池电源时,具有交流…

Python 四大主流 Web 编程框架

目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实。但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架开发的常用知识,及目前的4种主流Python网络框架:Django、Tornado、Flask、Twisted。 …

【Git】Git是什么?简单说说Git的工作机制?Git的常用命令有那些?

目录 一、Git是什么? 二、简单说说Git的工作机制? 三、Git的常用命令有那些? 💟 创作不易,不妨点赞💚评论❤️收藏💙一下 一、Git是什么? Git 是一个免费的、开源的分布式版本控制系统,可…

若依(微服务版)-0 运行(踩坑日记)

本次运行采用本地运行程序,其他中间件全部使用docker安装在云服务器上 本次运行的若依为目前最新版本3.6.2,nacos/nacos-server:v2.0.4,mysql8.0,redis和nginx最新版就行。 关于nacos这里会有好几个坑,详情请看naocs…

【C语言】浮点型数据在内存中的存储

🚀🚀🚀 如果文章对你有帮助不要忘记点赞关注收藏哦🚀🚀🚀 文章目录⭐浮点数在内存中的存储1.1 🤓举个例子:1.2浮点数存储规则🌈:对于M与E有一些特别规定1.3解释前面题目&…

内存映射(1)

内存映射 将磁盘文件中的数据映射到内存,用户通过修改内存就能修改磁盘文件 相关的系统调用: void *mmap() 功能:将一个文件或设备的数据映射到内存中 参数: void *addr : NULL 由内核指定length : 要映射的数据长度,…

端口扫描介绍

文章目录1、端口的基本概念2、端口的常见分类3、端口扫描原理1、端口的基本概念 “端口” 在计算机网络领域中是个非常重要的概念它是专门为计算机通信而设计的,它不是硬件,不同于计算机中的“插槽”,可以说是个“软端口”端口是由计算机的通…

MacBook Pro 恢复出厂设置

目录1.恢复出厂设置1.1 按Command-R 键1.2 macOS 实用工具1.3 从 macOS 恢复功能的实用工具窗口中选择“磁盘工具”,然后点按“继续”1.4 在“磁盘工具”边栏中选择您的设备或宗卷。1.5 点按“抹掉”按钮或标签页1.6 抹掉OS X HD - 数据 完成1.7 抹掉 OS X HD1.8 查…

核心技术: springboot 启动类加载时方法执行的几种实现方式, bean声明周期, 启动执行顺序

目录 1. 业务场景 -> 1.1 初始化操作 -> 1.2 业务操作 -> 1.3优势 2. 实现方式(多种方式,不同思想) -> 2.1 定时调度任务(常用四种方式 task ) --> 2.1.1 Timer(单线程) --> 2.1.2 scheduledExecutorService(多线程并发执行,线程池) --> 2.1…

SmoothNLP新词发现算法的改进实现

SmoothNLP新词发现算法的改进实现 背景介绍 新词发现也叫未登录词提取,依据 《统计自然语言处理》(宗成庆),中文分词有98%的错误来自"未登录词"。即便早就火遍大江南北的Bert也不能解决"未登录词"的Encoding问题,便索性…

棋牌类游戏测试用例怎么写?我敢打赌你绝对不知道

目录 一.登陆 二.大厅 三.小游戏 四.银行功能 五.其他按钮 总结感谢每一个认真阅读我文章的人!!! 重点:配套学习资料和视频教学 一.登陆 1&#xff0e…

Redis高可用集群方案

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 @[TOC](文章目录)主从复制哨兵模式(sentinel)Cluster集群在生产过程中,Redis不一定会单独部署。因为一旦redis服务因为某些原因导致无法提供数,那么redis就不可用了。那么实现redis高可用的方式就…

Orin装机

安装目录orin刷机谷歌输入法ROS遇到的问题:1、sudo rosdep init2、rosdep updatelibrealsenserealsense_ros安装librealsense安装realsense_ros总的来说就是,注意librealsense和realsense-ros的版本,对于librealsense,采用源码安装…

企业级分布式应用服务 EDAS

什么是企业级分布式应用服务EDAS企业级分布式应用服务EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的云原生PaaS平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持Spring Cloud和Ap…

gcc/g++、动静态库、make/makefile

目录 gcc/g gcc和g的对比 "一段代码的使命" ●预处理 ●编译 ●汇编 ●链接 ●动/静态链接 make/makefile gcc/g gcc和g的对比 对于c文件而言,使用gcc或者g并没有什么区别。而对于cpp文件,在预处理、编译、汇编这三部分,…

《精通Spring4.x 企业应用开发实战》第1章 Spring概述

目录标题前言一、Spring带给我们什么二、Spring体系结构三、Spring4.0新特性核心容器的增强泛型依赖注入Map依赖注入Lazy延迟依赖注入List注入Conditional 注解CGLIB 代理类增强其他四、Spring 子项目总结前言 汇总:《精通Spring4.x 企业应用开发实战》 一、Spring带…

L2-010 排座位

布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。 输入格式&#xff1…

【LeetCode】剑指 Offer 10- II. 青蛙跳台阶问题 p77 -- Java Version

题目链接:https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ 1. 题目介绍(10- II. 青蛙跳台阶问题) 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取…

采购评标管理过程是怎样的?有哪些评标标准?

采购活动的评标是检查和比较投标的有组织的过程,以选择最佳报价,努力获得实现企业目标所需的货物、工程和服务。 评标是由一个被称为评标小组的机构负责。这个小组如何称呼,取决于企业的情况。同义词有报价审查小组、投标审查委员会或投标审…