Java Final关键字使用

news2024/10/5 13:08:47

Final关键字

final可以修饰类, 属性, 方法和局部变量

在某些情况下程序员可能有以下需求,就会使用到final:
1)当不希望类被继承时,可以用final修饰.
2)当不希望父类的某个方法被子类覆盖/重写(override)时,可以用final关键字修饰。[访问修饰符 final 返回类型 方法名]
3)当不希望类的的某个属性的值被修改,可以用final修饰. [ public final double TAX_RATE=0.08 ]
4)当不希望某个局部变量被修改,可以使用final修饰[ final double TAX_RATE=0.08 ]

注意事项

  1. final修饰的属性又叫常量, 一般用 XX_XX_XX 来命名
  2. final修饰的属性在定义时, 必须赋初值, 并且以后不能再修改, 赋予初值可以在如下位置之一
    [定义时,在构造器中, 在代码块中]
  3. 如果final修饰的属性是静态的, 则初始化的位置只能是
    [定义时, 在静态代码块], 不能在构造器中赋值.
  4. final类不能继承,但是可以实例化对象
    如果类不是final类,但是含有final方法, 则该方法虽然不能被重写, 但是可以被继承
  5. 一般来说,如果一个类已经是final类了,就没有必要再将方法修饰成final的.
  6. final不能修饰构造方法
  7. final和static往往搭配使用,效率更高,不会导致类加载,底层编译器做了优化处理
  8. 包装类(Integer,Double,Float, Boolean等都是final), String也是final类。

练习题目

请编写一个程序,能够计算圆形的面积。要求圆周率为3.14. 赋值的位置3个方式[定义时,在构造器中, 在代码块中]都写一下

class Circle {
    private double radius;

    private final double PI; // 定义时赋值

    // 构造器里赋值
    public Circle(double radius) {
        this.radius = radius;
        // PI=3.14
    }

    {
        PI = 3.14;
    }

    public double calArea() {
        return PI * radius * radius;
    }
}

public class Test {
    public static void main(String[] args) {
        Circle circle = new Circle(5.0);
        System.out.println("面积等于" + circle.calArea());
    }
}

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

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

相关文章

谷粒学院——Day06【整合阿里云OSS、EasyExcel技术实现Excel导入分类】

阿里云存储OSS 一、对象存储OSS 1. 开通“对象存储OSS”服务 阿里云:https://www.aliyun.com/申请阿里云账号实名认证开通“对象存储OSS”服务进入管理控制台 2. 创建Bucket 选择:标准存储、公共读、不开通。 3.上传默认头像 4. 创建RAM子用户 二、…

如何手写一个单向链表?看这里

一. 问题展现 通常我们在大多数的面试中,遇到关于集合的问题都是比较多的。一般情况下,许多面试官通常都会问我们关于Set集合和Map集合的相关知识点,并对此进行重重陷阱的布置,此时很多面试者往往就很容易被带到面试官挖好的陷阱…

netstat命令详解

netstat命令详情一、前言二、netstat查看端口命令三、显示每个协议的统计信息四、显示核心路由信息五、netstat的其他参数一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡,小伙伴们,让我们一起来学习netstat命令使用,netstat命令是一个监控TC…

echarts疑难杂症

echarts疑难杂症1.调整柱状图、饼图的大小2.嵌套饼图且颜色保持一致3.并排展示饼图且中间展示文字4.折线图(柱状图)双y轴5.使用echarts56.图形不展示的问题1.调整柱状图、饼图的大小 //柱状图主要根据grid属性中的top/bottom/left/right属性调整大小 le…

【毕业设计】机器视觉行人口罩佩戴检测系统 - python 深度学习

文章目录0 前言1 简介2 效果展示3 实现方法3.1 模型介绍3.2 获取数据集3.3 数据集获取4 最后0 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! 🔥 对毕设有任何疑问都可以问学长哦! 这两年开始,各个学…

164页5万字轨道交通BIM方案建议书

目录 1、 概况 1.1. BIM国内外现状 1.1.1. 国外BIM现状 1.1.2. 国内BIM现状 1.2. BIM在轨道交通工程领域的发展概况 1.3. 中铁二院BIM发展总体思路的建议 2、 解决方案总体架构 2.1. 解决方案应具备的要素 2.2. 解决方案整体架构 2.3匹配度分析 3、 设计阶段解决方案…

数据库的基本操作(5)

先回顾一下在上一篇中的内容: 聚合查询:行和行之间的数据的加工。 聚合函数:count,avg,sum...... group..by...进行分组,将指定列的值进行分组,将相同的记录合并到一个组中。每个组还可以进行…

Golang入门笔记(10)—— 包

使用包的原因: 1.不可能把所有的不同业务功能的函数都放在一个源文件中,这样不便于管理。通常的做法是:我们会把具有相同一些功能和业务的维度的函数,分门别类的放在不同的源文件中。 2.不同的包名,可以解决两个函数…

【SQL 中级语法 3】三值逻辑和NULL

普通语言里的布尔型只有true和false两个值,这种逻辑体系被称为二值逻辑。而SQL语言里,除此之外还有第三个值unknown,因此这种逻辑体系被称为三值逻辑(three-valued logic)。 为什么SQL语言采用了三值逻辑呢&#xff1…

java项目-第139期ssm博客系统-ssm毕业设计_计算机毕业设计

java项目-第139期ssm博客系统-ssm毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm博客系统》 该项目分为前台和后台2个部分。 前台不需要登录,游客都可以访问,并发表评论 管理员登录后可以进行文章的发表,分类&…

德鲁克《卓有成效的管理者》学习读书-总结

有幸学习了管理大师德鲁克先生的《卓有成效的管理者》,帮助学习者理清了在理论和实践之间建立桥梁,使其生根落地,开花结果;管理不是常识,管理是个实践学科,要不断温习,不断与领导同事联接&#…

人肠道宏病毒与其宿主和环境因素的关联分析

近期《Nature Communications》期刊上(IF17.694)发表的“Extensive gut virome variation and its associations with host and environmental factors in a population-level cohort”研究论文中,对从4198个个体的肠道宏基因组中获得的人类肠道病毒进行分析&#x…

PCB设计时如何选择合适的叠层方案

大家在画多层PCB的时候都要进行层叠的设置,其中层数越多的板子层叠方案也越多,很多人对多层PCB的层叠不够了解,通常一个好的叠层方案可以降低板子产生的干扰,我们的层叠结构是影响PCB板EMC性能的重要因素,下面我们以四层板和六层板…

刨根问底 Redis, 面试过程真好使

充满寒气的互联网如何在面试中脱颖而出,平时积累很重要,八股文更不能少!下面带来的这篇 Redis 问答希望能够在你的 offer 上增添一把🔥。 在 Web 应用发展的初期阶段,一个网站的访问量本身就不是很高,直接使…

SRM供应商关系管理系统解决方案

SRM供应商关系管理系统解决方案供应商关系管理(SRM)软件的采购指南 什么是供应商关系管理(SRM)软件? 供应商关系管理(SRM)软件是一个通讯解决方案制造商、分销商和零售商的供应链。供应商管理用于将所有有关组织的供应商通讯和颜色编码索引卡片。现在SRM管理的数字由一个国家…

OOM内存溢出分析

Mat内存溢出dump文件分析工具http://www.eclipse.org/mat/downloads.php 模拟OOM Java 程序 package org.cj.oom;import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit;/*** 创建内存分析* java启动参数指定内存 -Xms1m -Xmx1m* author…

没有上司的舞会 - 树形DP

目录题目描述前言C代码题目描述 Ural 大学有 NNN 名职员,编号为 1∼N1∼N1∼N。 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。 每个职员有一个快乐指数,用整数 HiH_iHi​ 给出,其中 1≤i≤N1≤i≤N1≤i≤N。…

ElasticSearch分布式搜索引擎安装保姆级教程

ElasticSearch分布式搜索引擎安装教程 一.Hr:ElasticSearch是什么? 答:Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的&#…

后端API接口性能优化的10种方案,真有用!

后端API接口性能优化的10种方案,真有用! 批量思想:批量操作数据库 优化前: //for循环单笔入库 for(TransDetail detail:transDetailList){insert(detail); } 优化后: batchInsert(transDetailList); 打个比喻&…

docker-compose的安装与卸载

compose项目是docker官方的开源项目,负责实现对Docker容器的快速编排 定位 定位是定义与运行多个docker容器的应用,同时可以对多个容器进行编排Compose 中有两个重要的概念: 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的…