Java高频面试之SE-09

news2025/1/8 6:52:47

hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶

final关键字有什么作用?

在 Java 中,final 关键字有多个用途,它可以用于类、方法和变量。根据使用的上下文,final 的含义和作用略有不同。以下是 final 关键字的不同用途及其作用:

1. 用于变量

  • 最终变量(Final Variables)

    • 如果一个变量被声明为 final,则该变量只能被赋值一次。一旦赋值后,不能再改变其值。
    final int x = 10;
    // x = 20; // 编译错误,不能修改最终变量
    
  • 引用类型

    • 对于引用类型的 final 变量,虽然变量本身不能再指向另一个对象,但可以修改对象的内部状态(即对象的属性)。
    final List<String> list = new ArrayList<>();
    list.add("Hello"); // 允许,修改对象的状态
    // list = new ArrayList<>(); // 编译错误,不能重新赋值
    

2. 用于方法

  • 最终方法(Final Methods)

    • 如果一个方法被声明为 final,则该方法不能被子类重写。这可以防止修改父类的方法实现,确保方法逻辑的稳定性。
    class Parent {
        final void show() {
            System.out.println("Final method in Parent class.");
        }
    }
    
    class Child extends Parent {
        // void show() { // 编译错误,无法重写父类的 final 方法
        //     System.out.println("Trying to override.");
        // }
    }
    

3. 用于类

  • 最终类(Final Classes)

    • 如果一个类被声明为 final,则该类不能被继承。换句话说,无法创建该类的子类。这通常用于设计不希望被修改的类,比如 String 类。
    final class FinalClass {
        // 类的内部实现
    }
    
    // class ExtendedClass extends FinalClass { // 编译错误,FinalClass 不能被继承
    // }
    

4. 用于提高性能

  • 使用 final 声明变量、方法或类时,编译器和 JVM 可以进行某些优化,因为它们知道该实体不会改变或被重写,从而可能提高性能。

5. 保持不可变性

  • 标记变量为 final 是确保数据不可变的一种机制,特别是在多线程编程中,可以防止对共享数据的意外修改。

总的来说

final 关键字在 Java 中用于限制变量、方法和类的行为。它可以帮助提高代码的可维护性、安全性和性能。理解 final 的用途能够帮助本牛马baby编写更健壮和可预测的代码。

final、finally、finalize 的区别?

finalfinallyfinalize 是 Java 中的三个不同关键字或方法,它们在功能和用途上有显著的区别:

1. final

  • 定义final 是一个关键字,用于声明一个变量、方法或类为最终的,意味着它不能被修改或重写。

  • 用途

    • 最终变量:声明的变量只能赋值一次。
      final int x = 10;
      
    • 最终方法:声明的方法不能被子类重写。
      final void myMethod() { /* ... */ }
      
    • 最终类:声明的类不能被继承。
      final class MyClass { /* ... */ }
      

2. finally

  • 定义finally 是一个关键字,用于异常处理,它用于定义一个代码块,该代码块无论是否发生异常都将被执行。

  • 用途

    • 通常与 trycatch 一起使用,finally 块用于执行关闭资源或清理工作等必要操作。
      try {
          // 可能抛出异常的代码
      } catch (Exception e) {
          // 处理异常
      } finally {
          // 无论是否发生异常,都会执行的代码
      }
      

3. finalize

  • 定义finalize 是一个方法,属于 Object 类,可能会在垃圾回收前被调用。

  • 用途

    • finalize() 方法由垃圾回收器在对象被回收之前调用,以允许对象进行清理操作(如释放资源)。
    • 由于 finalize() 的使用具有不确定性,现在推荐使用 try-with-resources 或其他资源管理方式,而不是依赖于 finalize()
    protected void finalize() throws Throwable {
        try {
            // 清理资源的代码
        } finally {
            super.finalize(); // 保证父类的 finalize 也被调用
        }
    }
    

总的来说

  • final:用于声明不允许修改或继承的变量、方法或类。
  • finally:用于异常处理相关代码块,确保特定代码会执行。
  • finalize:是一个方法在对象即将被垃圾回收时调用,用于清理资源,但其使用不再推荐。

面试官:直接调用System.gc()会立即执行GC吗?

答:不会

IDEA ji huo
https://pan.quark.cn/s/4216736c0427
🎬大全
https://kdocs.cn/l/cqhxNU9I2lLD
12306回家科技
https://pan.quark.cn/s/45f6bf9be1b3

在这里插入图片描述

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

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

相关文章

ChatGPT 主流模型GPT-4/GPT-4o mini的参数规模是多大?

微软论文又把 OpenAI 的机密泄露了&#xff1f;&#xff1f;在论文中明晃晃写着&#xff1a; o1-preview 约 300B&#xff1b;o1-mini 约 100BGPT-4o 约 200B&#xff1b;GPT-4o-mini 约 8BClaude 3.5 Sonnet 2024-10-22 版本约 175B微软自己的 Phi-3-7B&#xff0c;这个不用约…

某纪检工作委员会视频监控网络综合运维项目

随着某纪检工作委员会信息化建设的不断深入&#xff0c;网络基础设施的数量持续增加&#xff0c;对网络设备的运维管理提出了更为复杂和艰巨的要求。为了确保这些关键信息基础设施能够安全稳定地运行&#xff0c;该纪检工作委员会决定引入智能化运维管理系统&#xff0c;以科技…

显示器太薄怎么用屏幕挂灯?使用前先了解屏幕挂灯的最佳角度

人们对用眼健康的重视以及数字化办公和娱乐的普及&#xff0c;屏幕挂灯作为一种能够有效减少屏幕反光、保护眼睛的照明设备&#xff0c;受到了越来越多消费者的青睐。随着科技的进步&#xff0c;显示器设计日益轻薄&#xff0c;为我们的桌面节省了空间并带来了美观的视觉效果。…

HTTP/HTTPS ②-Cookie || Session || HTTP报头

这里是Themberfue 上篇文章介绍了HTTP报头的首行信息 本篇我们将更进一步讲解HTTP报头键值对的含义~~~ ❤️❤️❤️❤️ 报头Header ✨再上一篇的学习中&#xff0c;我们了解了HTTP的报头主要是通过键值对的结构存储和表达信息的&#xff1b;我们已经了解了首行的HTTP方法和UR…

excel快速计算周数的方法

业务中经常要通过周汇总计算&#xff0c;为方便后续汇总在源数据引入“周”列 公式&#xff1a; "W"&IF((ROW()1)/7<1,1,ROUNDUP((ROW()1)/7,0))函数释义&#xff1a; ①一周有7天&#xff0c;如果1月1号刚好是从周一开始&#xff0c;那么计算周数可以简单得…

redis各种数据类型介绍

Redis 是一种高性能的键值存储数据库&#xff0c;它支持多种数据类型&#xff0c;使得开发者可以灵活地存储和操作数据。以下是 Redis 支持的主要数据类型及其介绍&#xff1a; 1. 字符串&#xff08;String&#xff09; 字符串是 Redis 中最基本的数据类型&#xff0c;它可以存…

Python 模块,包(详解)

一. 引用变量 引用变量&#xff1a;值的传递通常可以分为两种方式&#xff0c;一种是值的传递&#xff0c;一种是引用地址传递&#xff0c;在Python中一般都是用引用地址传递 变量名和对象&#xff1a;变量名&#xff08;如 a&#xff09;和它指向的对象&#xff08;如整数 5&a…

RabbitMQ发布确认高级篇(RabbitMQ Release Confirmation Advanced Edition)

系统学习消息队列——RabbitMQ的发布确认高级篇 简介 ‌RabbitMQ是一个开源的消息代理软件&#xff0c;实现了‌高级消息队列协议&#xff08;AMQP&#xff09;‌&#xff0c;主要用于在分布式系统中进行消息传递。RabbitMQ由‌‌Erlang语言编写&#xff0c;具有高性能、健壮…

封装/前线修饰符/Idea项目结构/package/impore

目录 1. 封装的情景引入 2. 封装的体现 3. 权限修饰符 4. Idea 项目结构 5. package 关键字 6. import 关键字 7. 练习 程序设计&#xff1a;高内聚&#xff0c;低耦合&#xff1b; 高内聚&#xff1a;将类的内部操作“隐藏”起来&#xff0c;不需要外界干涉&#xff1b…

【代码随想录】刷题记录(89)-分发糖果

题目描述&#xff1a; n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0…

Ae:合成设置 - 3D 渲染器

Ae菜单&#xff1a;合成/合成设置 Composition/Composition Settings 快捷键&#xff1a;Ctrl K After Effects “合成设置”对话框中的3D 渲染器 3D Renderer选项卡用于选择和配置合成的 3D 渲染器类型&#xff0c;所选渲染器决定了合成中的 3D 图层可以使用的功能&#xff0…

掌握RabbitMQ:全面知识点汇总与实践指南

前言 RabbitMQ 是基于 AMQP 高级消息队列协议的消息队列技术。 特点&#xff1a;它通过发布/订阅模型&#xff0c;实现了服务间的高度解耦。因为消费者不需要确保提供者的存在。 作用&#xff1a;服务间异步通信&#xff1b;顺序消费&#xff1b;定时任务&#xff1b;请求削…

react构建项目报错 `npm install --no-audit --save @testing-l

这应该是我们想构建 react18 的项目&#xff0c;但是 通过 npx create-react-app my-app进行构建时&#xff0c;给我们安装的依赖是 react 19 下面提供一下我的解决方法&#xff1a; 第一步&#xff1a;在 package.json 中把依赖 react19 改为 react 18 第二步&#xff1a;添…

App窗口创建流程(Android12 )

有关的窗口对象 PhoneWindowActivityThread#performLaunchActivity {Activity.attach}Surface new ViewRootImpl 创建null对象mSurface.transferFrom(getOrCreateBLASTSurface())//填充内容创建native层的SurfaceLayerSurfaceFlinger::createLayerRenderSurfaceSurfaceFlinger…

LLM之Agent(十三)| 使用 PydanticAI 框架构建多代理LLM 系统(保姆教程)

Pydantic 是 Python 生态系统中的强大平台,每月下载量超过 2.85 亿次。现在,Pydantic的创始人也正在通过 Pydantic AI 涉足 AI 的前沿领域,Pydantic AI 是一个专为构建由生成式 AI 提供支持的生产级应用程序的框架。在本文中,我们将深入探讨 Pydantic AI 的独特之处、它的主…

常用的数据结构API概览

List ArrayList 1、在初始化一个ArrayList的时候&#xff0c;如果我想同时set一些值 比如存放int[ ] List<int[]> list new ArrayList(Arrays.asList(new int[]{intervals[0][0],intervals[0][1]}));//或者int[] temp new int[]{intervals[0][0],intervals[0][1]}…

年会游戏大全 完整版见考试宝

企业年会游戏大全&#xff08;35个&#xff09; 1.泡泡糖 游戏准备&#xff1a;主持人召集若干人上台&#xff0c;人数最好是奇数。 游戏规则&#xff1a;当大家准备好时&#xff0c;主持人喊“泡泡糖”大家要回应“粘什么”&#xff0c;主持人随机想到身体的某个部位&#x…

用豆包去除文章Ai味和重复率,实操教程

用AI生成的文章总是有“AI味”或者重复率高的问题&#xff1f; 今天就教你如何使用豆包轻松去除这些问题 让你的文章更自然、更具个人风格&#xff01;✍️✨ 详细版指令教程都整理了&#xff0c;纯粹F享啦~

【论文复现】改进麻雀搜索算法优化冷水机组的最优负载调配问题

目录 1.摘要2.麻雀搜索算法SSA原理3.改进策略4.结果展示5.参考文献6.代码获取 1.摘要 为了应对暖通空调&#xff08;HVAC&#xff09;系统由于不当负荷分配导致的高能源消耗问题&#xff0c;本文提出了一种改进麻雀搜索算法&#xff08;ISSA&#xff09;。ISSA算法旨在在满足负…

分布式ID生成-雪花算法实现无状态

雪花算法这里不再赘述&#xff0c;其缺点是有状态&#xff08;多副本隔离时&#xff0c;依赖手动配置workId和datacenterId&#xff09;&#xff0c;代码如下&#xff1a; /*** 雪花算法ID生成器*/ public class SnowflakeIdWorker {/*** 开始时间截 (2017-01-01)*/private st…