final修饰类、变量、方法

article/2025/9/23 13:09:12

final 修饰类、方法、变量,表示不可变的
final 修饰变量:不可变,必须赋初值。

  • final成员变量:必须由程序员显示的指定初始值
    成员变量随着类或对象的初始化而初始化。当执行静态初始化块时可以对类变量赋初始值;当执行普通初始化块构造器时可对实例变量赋初始值。
    final修饰的实例变量,要么在定义该实例变量时执行初始值,要么在普通初始化块构造器中为该实例变量指定初始值。
    final修饰的类变量,要么在定义该类变量时指定初始值,要么在静态初始块中为该类变量指定初始值。
    尽量不要在final变量显示初始化之前访问它。
    在这里插入图片描述
  • final局部变量:系统不会对局部变量进行初始化,必须由程序员显示初始化。不能对形参赋初值。
    在这里插入图片描述
  • final 修饰基本类型变量引用类型变量的区别
    修饰基本类型变量:只能赋值一次
    修饰引用类型变量:只要它所引用的地址不变,即一直是这个对象,但对象的属性可以变化。以下代码合法。
    final Person p = new Person();
    p.setAge(23);
  • 可执行“宏替换”的final变量
    满足的条件:
    (1)使用final修饰符修饰
    (2)定义该final变量事制定了初始值
    (3)该初始值可以在编译时被确定下来
    编译器会把程序中所有用到该变量的地方直接替换成该变量的值。
    eg: final in a = 5;
    System.out.println(a);
    运行时,变量a根本不存在,直接执行System.out.println(5)
    常量池来管理用过的字符串直接量:String a = “Java”;
    String b = “Java”.此时,a和b都指向常量池中的"Java"字符串。
  • final方法: 不能被重写(子类不能重写父类的方法)。
    Java提供的Object类里有一个final方法:getClass()方法。
    方法重载是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数类型不能完全相同
    方法重写是存在子父类之间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数表和相同的返回类型。
    final修饰的方法不能被重写,但是能被重载。

final类 :final修饰的类不能有子类。

不可变类 :指创建该类的实例后,该实例的实例变量是不可改变的。
创建自定义的不可变类,遵守以下规则:
(1)使用private 和final修饰符来修饰该类的成员变量
(2)提供带参数构造器,用于根据传入参数来初始化类里的成员变量。
(3)提供getter()方法,不提供setter方法。
(4)如果有必要,重写Object类的hashCode()方法和equals()方法。保证equals()相等时,hashCode()也相等。

  • 如果需要这几一个不可变类,需要注意引用类型的成员变量,如果引用类型的成员变量的类是可变的,就需要采取措施保护成员变量所引用的对象不会被修改。
    缓存实例的不可变类
    不可变类的实例状态不可变,可以方便被多个对象所共享。如果程序中经常使用相同的不可变类实例,则考虑缓存这种不可变类的实例。如果缓存池已满,则采用“先进先出”的规则决定哪个对象被移除缓存池。
    Integer in1 = new Integer.valueOf(6);生成Integer对象,并缓存该对象,只缓存-128 ~~127之间的Integer对象。

http://chatgpt.dhexx.cn/article/2reC9MLC.shtml

相关文章

static,final,static final修饰变量到底有什么区别?

平时在项目中可能经常会用到一些常量,一般都定义成static final的,有时候可能会突然想到,到底staitc,final,static final定义的变量到底有什么关系呢? 通过以下例子一起看一下: /*** Descript…

final修饰成员变量和局部变量的区别

昨晚12点以后,跟人讨论问题,无意中聊到了final可以修饰的类型以及修饰后所具备的特点,可以详见 java基础问题101问(javaSE阶段知识汇总) 聊到final修饰成员变量和局部变量有什么区别时,只是隐约记得大概,没有十足把握&…

final修饰变量、方法、类举例

第一种,final修饰变量 经过final修饰过的STR2"2"就是普通的字符串连接,不再重新new,而str3"2"相当于new了一个新的String对象。 第二中,final修饰方法 父类中经过final修饰过的方法,在子类中不能…

final修饰的变量

被final修饰的实例变量必须显式指定初始值,而且只能在如下3个位置指定初始值. 1.定义final实例变量时指定初始值; 2.在非静态初始化块中为final实例变量指定初始值; 3.在构造器中为final实例变量指定初始值. 对于普通实例变量,Java程序可以对它执行默认的初始化,也就是将实…

Java中的final变量 final修饰变量 final修饰方法 final修饰类 final和String的关系

目录 引言final修饰变量final修饰变量,不可再改变量的值final修饰对象,能否修改对象属性值final全局静态变量 final修饰方法final修饰类重要总结final关键字的好处final的重要知识点 引言 在开发的过程中,经常会使用String类来处理字符串相关…

Java中final修饰变量

一:final修饰的变量即成为常量,只能赋值一次,但是final所修饰局部变量和 员变量有所不同。 (1)final修饰的局部变量必须使用之前被赋值一次才能使用 (2)final修饰的成员变量在声明时没有赋值的叫“空白final变量”,空白final变量必须在构造器方法或静态代…

微信服务商-小程序支付-商户传入的appid参数不正确,请联系商户处理

报错:商户传入的appid参数不正确,请联系商户处理。 处理方式: 1、 2、需要在商户号,配置小程序的APPID https://pay.weixin.qq.com/static/pay_setting/appid_protocol.shtml

支付宝APP支付之查看支付宝商户ID

2019独角兽企业重金招聘Python工程师标准>>> 1、登录支付宝蚂蚁金服开放平台 2、查看账号详情,选择合作伙伴管理,账户管理,查看角色身份,此处的PID就是商户ID 3、点击秘钥管理,可查看绑定的相关应用及其APP…

iOS-微信支付商户支付下单id非法

最近在APP中WKWebView中调用微信支付的时候,一直报商户支付下单id非法。看了n边微信文档,度娘了n次-----仍未解决。因为安卓的支付是没有问题的所以就跟安卓兄弟要了最终调用微信的字符串: weixin://wap/pay?prepayid%3Dwx19165520991244d92…

微信企业付款 ”错误码:NO_AUTH,错误信息:此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置“报错的处理办法

提示”错误码:NO_AUTH,错误信息:此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置“ 快速解决问题!!! 解说一下这个IP:这个IP是你发起支付的服务器外网IP,跟用户发起提现IP没关系,所以这里配置的是服务器IP。 这是微信官方给…

微信外部浏览器支付遇到:支付场景非法、appid 未关联paysignkey、商户支付下单id非法 等问题

正常流程用户支付完成后会返回至发起支付的页面,如需返回至指定页面,则可以在MWEB_URL后拼接上redirect_url参数,来指定回调页面。如,您希望用户支付完成后跳转至https://www.wechatpay.com.cn,则可以做如下处理&#…

微信的商户单号和交易单号_教你获取支付宝和微信的订单号、商户单号,涨知识了...

生活中常会用到支付宝和微信交易,交易完成后会用到「订单号」「商户单号」,需要注意的是微信的 「交易单号」就 等同于「订单号」,「订单号」和「商户单号」一般在同一个地方就能找到!!! 获取支付宝「订单号…

微信支付商户平台,企业付款,企业向个人付款接口总结

这几天做项目,有个需求,是微信用户需要把公众号中赚的钱提现,于是查资料找到了微信商户平台中的高级业务:企业付款。 官方文档:https://pay.weixin.qq.com/wiki/doc/api/mch_pay.php?chapter14_1 为了以后方便看&am…

微信支付常见错误和统一下单错误码详情

微信支付常见错误和统一下单错误码详情 微信支付常见问题描述及解决方法微信调用统一下单接口,当result_codeFAIL时,错误代码及错误描述参考链接: 微信支付常见问题描述及解决方法 序号问题错误描述解决方法1此公众号并没有这些scope的权限&…

微信支付 ---- (商户号该产品权限处罚中)

微信支付 ---- (商户号该产品权限处罚中) 一、分析问题 今天星期天不情愿的来上班,刚坐下来准备吃一下我的小包子,客户爸爸就很核蔼来电话了~ 电话里面说微信小程序怎么不能支付了啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 我很淡…

小程序支付提示 商户号mch_id与appid不匹配 的解决

打开微信支付平台, 进入产品中心后, 点击关联更多Appid 之后填写小程序的appid即可。 appid 可以 从微信公众平台查看。 点开头像下拉即可看到appid填写完成后会提示 已成功发起APPID授权绑定申请 请提醒APPID管理员尽快确认申请请求 公众号(包括小程序…

小程序微信支付提示:商户订单号重复

最近在有用户反馈,点击订单结束无反应. 去后台看了看报错, 是这个样子的 <xml><return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[保密处理]]></appid>…

【支付】第三方支付收单机构

简要概述 现在&#xff0c;在银行卡收单市场里&#xff0c;第三方收单机构在全国范围类极速发展。 收单牌照的第三方支付机构&#xff0c;即通过线下布放POS&#xff0c;替商户收单&#xff0c;第三方支付机构一般是找一个合作的收单银行&#xff0c;对于收单银行自己的持卡人…

小程序支付报错:向微信请求统一下单失败:商户号该产品权限未开通,请前往商户平台>产品中心检查后重试

一.检查微信商户和小程序是否建立绑定关系,没有绑定的需要进行绑定 1.登录微信商户平台,产品中心-->AppId账号管理-->关联AppId 2.填写要绑定的小程序AppId和认证主体点提交(可在微信公众平台-->设置-->基本设置获取) 3.登录微信公众平台 -->功能-->微信支付…

jenkins下载插件失败的解决方案

最近自己搭建jenkins&#xff0c;想实现远程部署环境&#xff0c;下载插件时提示失败&#xff0c;需要说明的是jenkins安装插件失败的原因是多样的&#xff0c;这里查找原因应该是镜像库地址的问题&#xff0c;以下是解决方案。 1.报错提示&#xff1a; 2.解决步骤&#xff1a…