高级java每日一道面试题-2024年7月8日

文章目录

  • 面试官问: final 在java中有什么作用
  • 面试者回答:
      • 1. final修饰变量
        • 基本数据类型:
          • 示例:
        • 对象引用:
          • 示例:
      • 2. final修饰方法
        • 示例:
      • 3. final修饰类
        • 示例:
      • 4. final局部变量和参数
        • 示例:
      • 总结

面试官问: final 在java中有什么作用

面试者回答:

在Java中,final 关键字是一个非常重要的修饰符,它用于指定某个变量的值一旦初始化之后就不能被改变(对于基本数据类型)或者某个对象的引用一旦指向某个对象之后就不能再指向其他对象(对于对象引用)。final 还可以用来修饰类和方法,但其在这些场景下的作用与修饰变量时有所不同。下面详细解释 final 在Java中的几种用途:

1. final修饰变量

基本数据类型:
  • final 修饰一个基本数据类型的变量时,这个变量的值一旦被初始化之后就不能被改变。
示例:
final int MAX_VALUE = 100;
// MAX_VALUE = 200; // 这行代码会编译错误,因为MAX_VALUE是final的
对象引用:

final 修饰一个对象引用时,这个引用一旦指向某个对象之后就不能再指向其他对象,但是该对象本身是可以被修改的(如果对象是可变的)。

示例:
final List<String> list = new ArrayList<>();
// list = new ArrayList<>(); // 这行代码会编译错误,因为list是final的
list.add("Hello"); // 这是允许的,因为list对象本身是可变的

2. final修饰方法

final 修饰一个方法时,这个方法不能在子类中被覆盖(重写)。这通常用于确保方法的行为在整个继承链中保持不变。

示例:
public class Parent {public final void show() {System.out.println("This is final method");}
}public class Child extends Parent {// @Override // 这行代码会导致编译错误,因为show()在Parent类中是final的public void show() {System.out.println("This will not override show()");}
}

3. final修饰类

final用于修饰一个类时,这个类不能被继承。这通常用于防止类的继承,确保类的完整性和封装性。

示例:
public final class FinalClass {// 类实现
}

在这个例子中,FinalClass不能被其他类继承。

4. final局部变量和参数

在方法内部,final可以用于修饰局部变量和方法参数,这意味着这些变量的引用不能改变。但是,如果局部变量是对象类型,那么final只保证了引用不变,对象的内容仍然可以修改。

示例:
public void test(final List<Integer> list) {// list = new ArrayList<>(); // 错误,不能重新赋值list.add(10); // 正确,改变了list的内容而不是引用
}

在这个例子中,list的引用不能改变,但是可以改变list的内容。

总结

  • final 关键字在Java中用于指定某些内容是不可变的,包括变量的值、方法的覆盖以及类的继承。
  • 对于基本数据类型的变量,final 确保其值不变;对于对象引用,final 确保引用不变但对象本身的状态可以改变(如果对象是可变的)。
  • final 方法不能被覆盖,final 类不能被继承。
  • 使用 final 可以提高程序的稳定性和安全性,但也可能导致代码的灵活性降低。因此,在使用时需要权衡利弊。

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

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

相关文章

互联网十万个为什么之什么是CDN?

CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;是一组分布在不同地理位置的服务器&#xff0c;其目的是更有效地向用户分发互联网内容。通过缓存内容&#xff08;如网页、图片、视频和其他类型的网络数据&#xff09;在多个服务器上&#xff0c…

学生护眼台灯哪个牌子实用?值得入手的学生护眼台灯十大排名分析

在这个数码时代&#xff0c;人们对屏幕的依赖程度越来越高&#xff0c;尤其是孩子们。他们不仅在学校里需要长时间盯着教科书&#xff0c;还会在学习和娱乐中使用各种数码设备。然而&#xff0c;这也使得眼睛健康问题逐渐凸显&#xff0c;尤其是儿童近视的问题。为了保护视力&a…

Flink 提交作业的方式

参考&#xff1a; Flink运行方式及对比-腾讯云开发者社区-腾讯云

IP地址設置的全面指南-okeyproxy

IP地址是每個連接到互聯網的設備的唯一識別字&#xff0c;無論是家庭網路還是企業網路&#xff0c;正確設置IP地址是確保網路穩定和安全的關鍵。IP地址由一系列數字組成&#xff0c;通常分為IPv4和IPv6兩種格式。IPv4是最常見的形式&#xff0c;由四組0到255之間的數字組成&…

济南网站建设费用为什么差距如此之大

济南网站建设费用的差距之所以如此之大&#xff0c;主要是由于以下几个因素的影响。 首先&#xff0c;不同的网站建设公司所提供的服务内容和质量不尽相同&#xff0c;这直接导致了费用的差距。一些知名的大型网络公司会提供全方位的网站建设服务&#xff0c;包括网站设计、页面…

ELFK 8.12.2 部署 -- docker部署方式⚽

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

SpringBoot源码阅读(3)——监听器

ApplicationListener类初始化位置 在类SpringApplication的构造方法&#xff0c;第267行 在META-INFO/spring.factories中配置的实现类 spring-boot # Application Listeners org.springframework.context.ApplicationListener\ org.springframework.boot.ClearCachesApplic…

Top级“水刊”!高达10.1分,发文量大,最快1个月左右录用,几乎沾边可录!

本周投稿推荐 SCI • 能源科学类&#xff0c;1.5-2.0&#xff08;来稿即录25天&#xff09; • 计算机类&#xff0c;2.0-3.0&#xff08;纯正刊29天录用&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; 知网 • 7天录用-检索&#xff08;急录友好&…

【YOLOv5进阶】——替换主干网络(backbone)-MobileNet为例

声明:笔记是做项目时根据B站博主视频学习时自己编写,请勿随意转载! 一、说在前面的一些话 1、torchvision 需要用到torchvision里的一些模块,之前第一期配置环境的时候已经安装过torchvision! torchvision是PyTorch生态系统中的一个关键库,专门为计算机视觉任务设计和优…

个性化微课教学视频推荐系统-计算机毕业设计源码77648

个性化微课教学视频推荐系统 摘 要 随着信息技术的迅猛发展&#xff0c;教育领域正经历着前所未有的变革。微课作为一种新兴的教学资源形式&#xff0c;以其短小精悍、针对性强、易于传播等特点&#xff0c;逐渐受到广大师生的青睐。然而&#xff0c;在微课资源日益丰富的今天…

Python语法基础

python语法 TIPS&#xff1a;本文适合有一定编程语言基础的人快速复习python基本语法 python的IO&#xff1a; 基础input ainput()&#xff1a;默认输入 基础output print():默认输出 默认换行参数end""控制字母之间的距离,可以理解为默认为换行符&#xff0c;修改…

谷粒商城学习笔记-逆向工程错误记录

文章目录 1&#xff0c;Since Maven 3.8.1 http repositories are blocked.1.1 在maven的settings.xml文件中&#xff0c;新增如下配置&#xff1a;1.2&#xff0c;执行clean命令刷新maven配置 2&#xff0c;internal java compiler error3&#xff0c;启动逆向工程报错&#x…

【Linux】网络新手村

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 引言 今天&#xff0c;我们就开始学习Linux网络相关的内容。这篇博客作为Linux网络板块的第一篇博客看&#xff0c;我们首先要带着大家明白Linux网络的一些名词的概念&#xff0c;为之后的学习扫清障碍。然后我…

Bootstrap 按钮下拉菜单

Bootstrap 按钮下拉菜单 简介 Bootstrap 是一个流行的前端框架&#xff0c;用于快速开发响应式和移动设备优先的网页。它提供了一套丰富的组件&#xff0c;包括导航、下拉菜单、按钮等&#xff0c;使得开发者能够轻松构建功能丰富且美观的界面。在本文中&#xff0c;我们将重…

新加坡工作和生活指北:餐饮出行篇

文章首发于公众号&#xff1a;Keegan小钢 ​餐饮 前一篇文章 说到&#xff0c;有些房东不允许房客煮饭&#xff0c;那在新加坡都去哪吃饭&#xff1f;有什么吃的呢&#xff1f; 比较便宜的餐饮场所就是小贩中心、咖啡店和冷气食阁&#xff0c;也是大部分人常去的就餐场所。咖…

分布式整合

一、分布式架构介绍 什么是分布式系统 分布式系统指一个硬件或软件组件分布在不同的网络计算机上&#xff0c;彼此之间仅仅通过消息传递进行通信和协调的系统。 通俗的理解&#xff0c;分布式系统就是一个业务拆分成多个子业务&#xff0c;分布在不同的服务器节点&#xff0…

使用Java实现复杂数据结构算法

使用Java实现复杂数据结构算法 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 前言 在软件开发中&#xff0c;复杂数据结构和算法是提升程序效率和性能的重要组成部分。本文将通过Java语言&…

OCR技术主要用于自动化文本数据的录入

OCR是“Optical Character Recognition”的缩写&#xff0c;中文意思是光学字符识别。这是一种技术&#xff0c;允许电子设备如扫描仪或数码相机读取文档中的文本&#xff0c;通过检测和分析文本的暗和亮的模式来识别字符的形状&#xff0c;然后将这些形状转换为可被计算机处理…

ASP.NET Core----基础学习03----开发者异常页面 MVC工作原理及实现

文章目录 1. 开发者异常页面(1)Startup.cs 页面的基础配置(2)自定义显示报错代码的前后XX行 2. MVC 的原理3. MVC 的实现4.默认路由路径5.返回Json字符串 1. 开发者异常页面 (1)Startup.cs 页面的基础配置 namespace ASP.Net_Blank {public class Startup{private readonly IC…