使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

【一道面试题】使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 刚看到这道题时,自己也是有点懵逼的,也不清楚答案,便赶紧去百度final的用法,然后看了很多回答和实例才只知道了答案! 首先我们来看下 final关键字的用法,然后再来回答这道题! 1.final 关键字可以用来修饰 类,方法和变量(成员变量和局部变量) 那么我们来讨论下,final关键字集中用法 修饰类 final修饰类时,说明该类你不想被别人继承!一个类不被别的类继承就可以使用f... 阅读详情

final 关键字可以用来修饰 类,方法和变量(成员变量和局部变量) 

1、修饰类 

      final修饰类时,说明该类你不想被别人继承!一个类不被别的类继承就可以使用final来修饰

注意:final类中的所有成员方法都会被隐式地指定为final方法。

2、修饰方法 

      当一个方法被final修饰后,就代表该方法无法被重写,如果你想明确禁止该方法在子类中被覆盖的情况下,才将方法设置为final的,这样你就无法重写该方法了

但是:如果父类的 final修饰的方法设置为private,则子类可以写一个同名的方法,此时 ,该同名的方法不再产生final的报错,而是在子类重新定义了一个方法(注:类的private方法会隐式地被指定为final方法。)

3、修饰变量 

       被final修饰的变量其实就相当于定义了一个常量,无法被修改的变量,如果final修饰的是一个基本数据类型的变量,那么这个变量的值就定了,不能变了,而如果修饰的是一个引用变量,那么该变量存的是一个内存地址,该地址就不能变了,但是该内存地址所指向的那个对象还是可以变的,就像你记住了人家的门牌号,但你不能管人家家里人员数量
 

但是你可以改那个对象的内容:

        还有的人给方法定义的参数是 final类型的,是不想别人在方法内部修改参数的值,如果final修饰的是一个基本类型,那么是可以的,如果修饰的是引用类型,那么便不行了,因为就如上文那个str.append 对象的内容是可以变化的!

Windows 11 安装 OpenClaw(龙虾):不用WSL、不用虚拟机、启动、使用、停止、卸载 本文详解 Windows 11 原生安装 OpenClaw(龙虾)全流程,无需 WSL 或虚拟机。涵盖环境配置、安全警示、模型接入(如通义千问)及技能初始化。提供启动、文件自动化操作、停止与卸载的完整指南,并附常见认证过期解决方案。助您快速部署本地 AI 智能体,实现电脑操作自动化,提升工作效率。 阅读详情

相关推荐

Hypack 应用于地形测量的高级设置操作要领

Hypack 是业界公认最好的水文导航测量软件,是目前世界上应用广泛的专业测量疏浚软件。它能够接收,处理,存储和输出各种数据。Hypack支持绝大部分GPS,测深仪(国内如海鹰HY1603单波束测沙仪),多波束测深仪,旁扫声纳,涌浪补偿器,水位仪,验潮仪以及声速剖面仪。利用 Hypack 可以进行导航,单波束测量,多波束测量,旁扫测量以及疏浚实时监测等。软件界面友好,使用方便。本文简要阐述Hypack 应用于地形测量的几个重要操作要领。

中游鱼的博客 2801

final 使用详解

final 使用详解

qq_45985108的博客 1713

Codex CLI 接入智谱 GLM-5.1 完整教程

Codex CLI 是 OpenAI 推出的命令行 AI 编程工具,支持自主读取文件、执行命令、编写代码等操作,是目前最火的终端 AI 编程工具之一。通过 CLIProxyAPI 代理,我们成功将 Codex CLI 与智谱 GLM-5.1 模型对接,核心在于解决 Responses API 与 Chat Completions API 的协议转换问题。✅成熟稳定:CLIProxyAPI 社区活跃(4.7k fork),持续维护✅完整兼容:支持流式/非流式、function calling✅低成本。

u011831527的博客 2580

Java final的使用

1、Java方法形参被final修饰 1)final修饰基本变量 如果修饰的是基本变量,基本类型的值是不能改变的 /** * 对于基本类型,基本类型的值在方法内部是不能够改变的 * @param i */ public static void checkInt(final int i) { //编译不通过,final修饰的局部变量i的值是不能够改变的 // i=10; } 2)final修饰的是引用类型的变量 如果修饰的是引用类型的变量,引用类型变量所指的引用是不能改变的,但引用类型变量的值是可以改变

城主的专栏 297

KT148A语音芯片SOP外挂功放芯片8002D的说明_V1

KT148A语音芯片内置8欧姆0.5W的功放,所以一般的应用场景,播放一些提示音音量是足够的。但是有的需求还需要驱动更大的扬声器,实现更大的播放音量,这里我们给出解决方案。KT148A+HAA8002D的组合

qyvhome的博客 2150

2024最新指南:如何用Python批量下载Sentinel-2数据(附避坑清单)

本文提供2024年最新Python批量下载Sentinel-2遥感数据的完整指南,涵盖环境配置、API准备、核心下载流程实现及实战避坑清单。通过智能查询器、断点续传下载器等实用工具,帮助用户高效获取遥感数据,避免常见网络问题和数据完整性验证失败。

silver的专栏 619

面试题:使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

/* * 问题:使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变 * 答: * 使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。 */ public class Test10 { // final修饰基本类型的变量 public static final char CHAR = '中'; // final修饰引

1万+

WPS Office JS宏实现文件和数据的上传及下载

WPS Office JS宏下载、上传文件;通过加载项实现数据的获取和上传。

学点笔记 4302

final修饰的变量是引用不能改变还是引用的对象不能改变

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。

i_am_tomato的专栏 2万+

SAP CDS View 教程里的标准视图:SEPM_I_SalesOrderItem_E 当成一张表来用之前,你需要先弄清它到底是什么

摘要:SEPM_I_SalesOrderItem_E 是 SAP EPM demo 中的预交付 CDS 视图,用于表示销售订单行项目数据。它采用 VDM 命名规范,_E 后缀表示对外隐藏内部 UUID 键,提供业务友好的外部 ID 接口。该视图常见于 ABAP Platform 7.50+、开发版系统及 Gateway 教程中,可像表一样通过 Open SQL 查询。实际项目中,这类视图能有效解决内外系统键值映射问题,示例代码展示了如何查询其数据。使用时需注意系统是否安装了 EPM demo 内容。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 553

MTK平台Wi-Fi学习--wifi channel 通过国家码进行功率限制和wifi eFEM 基本配置和wifi Tx SEM问题

本文介绍了WiFi功率限制配置和eFEM硬件设置方法。在功率限制方面,通过国家码可针对不同信道设置功率上限,需在rlm_txpwr_init.h文件中配置信道和功率值(单位0.5dBm),WiFi6的HE_TB模式还可分RU设置。eFEM硬件配置需参考平台设计,注意VDET接口处理,首次使用建议提交HW/SW案例审核。软件配置需获取专用FEM包,包含NVRAM、GPIO等文件,按指导合并后版本才会切换为eFEM版本。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 487

java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?   是引用对象的地址值不能变,引用变量所指向的对象的内容是可以改变。   final变量永远指向这个对象,是一个常量指针,而不是指向常量的指针。 例如:final StringBuffer sbu = new StringBuffer(“abc”);     在对其进行重新赋值    

LFSenior 9340

Android 蓝牙——概述(一)

Profiles (蓝牙应用规范),它从应用场景的角度为蓝牙技术的使用制定了不同的规范。这也是和大众日常生活接触最多的一部分。蓝牙支持很多Profiles:MAP:(MessageAccessProfile),短信访问协议,允许设备间的信息交换,短信。使用场景:智能车载中同步短信等信息。HFP:(Hands-free Profile),电话免提协议,让蓝牙设备(如蓝牙耳机/车机)可以控制电话,如接听、挂断、拒接等。

小旭的专栏 3492

使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

是引用不能变,也就是final指向的变量地址不能变,对于一个变量是某个对象的话,对象内部属性的值都是可以变的。 为了清楚说明,附上代码: public class Test1 { static class Animal { String type = "dog"; Animal() { } Animal(Stri...

ZLWei666的博客 548

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java 使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

原文链接:https://blog.youkuaiyun.com/u012110719/article/details/46334413 /* * 问题:使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变 * 答: * 使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。 */ public class Test10 { // final修饰基本类型的变量 public static final char CHAR = '中'; // f

取名为猫的狗的博客 185

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【面试题】使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

【面试题】 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 一、首先是本题延伸的知识点: java中的变量分为: 基本数据类型和引用数据类型 final关键字可以修饰:类、方法、变量 修饰类:该类不能被继承。 修饰方法:该方法不能被重写。 修饰变量:如果修饰的变量时基本数据类型,则该变量为常量,值不能改变;如果修饰的变量是引用数据类型,则该变量存的内存地址是不能改变了,但是内存地址存的内容是可以改变的。 二、其次解答本题 首先题目已经说明

m_zero_ichelle的博客 508

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

面试题系列之使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变

使用final关键字修饰一个变量时,是指引用变量不能变,但是引用变量所指向的对象中的内容还是可以改变的。 public class Demo2 { //声明一个final关键字修饰的字符串 public static final StringBuffer sb = new StringBuffer("abc"); public static void main(String[] args) { // TODO Auto-generated method stub //sb指向新的引用对象

江夏、的博客 1468

使用 final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句:final StringBuffer a=new StringBuffer("immutable");执行如下语句将报告编译期错误:a=new StringBuffer("");但是,执行如下语句则可以通过编译:a.append("broken!");有人在定义方法的参数时,...

彻底拆分,一切可控! 6205

final关键字:使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

首先,final的用法:在什么时候需要使用final? 1.当final修饰一个类的时候,那么该类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。 比如在java.lang包里面不能被继承的类 public final class Byte public final class Character public static final class Chara...

新一的技术笔记 578

final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句: final StringBuffer a=new StringBuffer("immutable");执行如下语句将报告编译期错误:a=new StringBuffer("");但是,执行如下语句则可以通过编译:a.append(" broken!"); 例子: 在定义方法的参

北京Java青年 574

使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

转:http://blog.youkuaiyun.com/u012110719/article/details/46334413 /*   * 问题:使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变   * 答:   * 使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。   */   public class

caixiajia的专栏 1127

使用 final 关键字修饰一个变量时,是引用不能变,还 是引用的对象不能变?

使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改 变的。例如,对于如下语句: final StringBuffer a=new StringBuffer("immutable"); 执行如下语句将报告编译期错误: a=new StringBuffer(""); 但是,执行如下语句则可以通过编译: a.append(" broken!"); 有人在定...

u014683368的博客 239

使用final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

使用final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改 变的。例如,对于如下语句: final StringBuffer a=new StringBuffer("immutable"); 执行如下语句将报告编译期错误: a=new StringBuffer(""); 但是,执行如下语句则可以通过编译: a.append(" broken!");

xiaoyu714543065的专栏 1255
上一篇: java多线程基础与概念
下一篇: ArrayList与Vector源码解析与区别
Array*
博客等级 码龄9年 2粉丝 19原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值