当前位置: 首页 > 编程日记 > 正文

Java中final关键字如何使用?

91

final变量只能赋值一次,赋值的方式有三种:

1)声明变量时直接赋值;

2)非静态成员变量在{}块中赋值,静态成员变量在static{}块中赋值;

3)非静态成员变量在构造方法中赋值。

final修饰类

final类不能被继承,因此不会有子类。final类中的方法不论是否有final修改,都是final的。

下面定义了一个简单的final类:

public final class FinalClass { }

//下面的类继承将会出现编译错误

class Sub extends FinalClass { }

final修饰方法

final方法不能被override。若父类中的方法为final的,则子类不能override该方法,但可以调用该方法(父类的final方法)。

下面的程序试图重写final方法,将会引发编译错误:

public class FinalMethod {

public final void say () { }

}

class Sub extends FinalMethod {

//下面方法将会出现编译错误

public void say () { }

}

final成员变量

final修饰的变量不可被改变,意思是不能被重新赋值。由于final修饰的成员变量不能重新赋值,所以Java语规定:final修饰的成员变量必须由程序员显示的指定初始值。

final修饰的类变量和实例变量指定初始值得地方如下:

1)类变量:必须在静态初始化块中指定初始值或声明该类变量时指定初始值,而且只能二选一指定。

2)实例变量:必须在非静态初始化块、声明该实例变量或构造器中指定初始值,而且只能三选一指定。

final修饰基本类型变量和引用类型变量的区别:

当final修饰基本类型变量时,改基本类型变量不能被改变。但对于引用类型变量而言,它保存的仅仅只是引用,final只保证这个引用类型变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变。

相关文章:

技术图文:双指针在求解算法题中的应用

背景 前段时间,在知识星球立了一个Flag,这是总结Leetcode刷题的第三篇图文。 理论部分 Python list 的源码地址: https://github.com/python/cpython/blob/master/Include/listobject.h https://github.com/python/cpython/blob/master/O…

【CSON原创】HTML5游戏框架cnGameJS开发实录(外部输入模块篇)

返回目录 1.为什么我们需要外部输入模块? 在游戏中我们常常用到类似这样的操作:鼠标点击某位置,玩家对象移动到该位置,或者按鼠标方向键,玩家向不同方向移动,等等。这些操作无一不用与外部输入设备打交道。…

中国科协(深圳)海外人才离岸创新创业基地源创力中心开业,主打国际创业服务...

2017年9月28日,由深圳市科学技术协会主办、深圳市罗湖区人民政府支持,深圳市源创力离岸创新中心承办的“梧桐山基地开园仪式暨梧桐湾未来论坛”于深圳举办。 据介绍, “中国科协(深圳)海外人才离岸创新创业基地”是在深…

找java培训机构如何挑选

​ java技术在互联网行业的需求率还是非常高的,它的发展前景非常可观,想要学好java技术,那么寻找一个好的java培训机构是非常重要的,那么找java培训机构如何挑选呢?来看看下面的详细介绍。 ​  找java培训机构如何挑选? 在选择…

技术图文:集合技术在求解算法题中的应用

背景 前段时间&#xff0c;在知识星球立了一个Flag&#xff0c;这是总结Leetcode刷题的第四篇图文。 理论部分 HashSet C# 语言中 HashSet<T> 是包含不重复项的无序列表&#xff0c;称为“集合(set)”。由于set是一个保留字&#xff0c;所以用HashSet来表示。 public…

sql server 2008数据导入Oracle方法

试了几种sql server数据导入Oracle的方法&#xff0c;发现还是sql server 的导入导出工具最好使。使用方法很简单&#xff0c;照着向导做就可以。不过使用中需要注意以下几点&#xff1a; 系统盘需要足够大。因为SSIS的临时文件都是生成在系统盘的&#xff0c;系统盘太小&#…

nginx+tomcat配置负载均衡集群

一、Hello world 1、前期环境准备 准备两个解压版tomcat&#xff0c;如何同时启动两个tomcat&#xff0c;方法如下&#xff1a; 首先去apache tomcat官网下载一个tomcat解压版。 解压该压缩包&#xff0c;生成n份tomcat 分别命名为 tomcat1&#xff0c;tomcat2&#xff0c; 然后…

参加UI设计培训要学多久

​ UI设计要学习的内容有很多&#xff0c;至于参加UI设计培训要学多久这个问题&#xff0c;要看你的学习能力和所在的UI设计培训机构都教些什么&#xff0c;我们来看看下面的详细介绍。 参加UI设计培训要学多久?千锋教育的课程大纲分享给大家参考学习一下&#xff1a; 阶段一&…

技术图文:C# 语言中的扩展方法

背景 前段时间&#xff0c;在知识星球立了一个Flag&#xff0c;在总结 Leetcode 刷题的第五篇图文时遇到了扩展方法 这个知识点&#xff0c;于是先总结一下。 1&#xff0e;扩展方法概述 扩展方法能够向现有类型“添加”方法&#xff0c;而无需创建新的派生类型、重新编译或以…

如何在ToolBar中显示文字和图标,自定义图标大小,并和MenuItem关联

要注意以下几个方面,先后顺序未必正确,有可能多设几次 1.设置ToolBar可以显示文字ToolBar.ShowCaption : True;2.设置ToolButton大小ImageList.WidthImageList.Height3.设置菜单关联4.设置运行时显示图标(这个是关键)ToolButton.Menuitum.ImageIndex要保证MenuItem所在的MainMe…

C#程序调用cmd执行命令

酷小孩 原文 C#程序调用cmd执行命令 对于C#通过程序来调用cmd命令的操作&#xff0c;网上有很多类似的文章&#xff0c;但很多都不行&#xff0c;竟是漫天的拷贝。我自己测试整理了一下。 代码&#xff1a; string str Console.ReadLine();System.Diagnostics.Process p new …

Java虚拟机的内存空间有几种

Java虚拟机的内存空间有几种&#xff1f;(1)问题分析&#xff1a; JVM(虚拟机)的内存划分 不同的数据使用的是哪一块内存空间 (2)核心答案讲解&#xff1a; Java虚拟机有那几块内存空间&#xff1a; 1)栈内存&#xff1a;方法运行时所进入的内存&#xff0c;里面还会存储程序的…

技术图文:排序技术在求解算法题中的应用

背景 前段时间&#xff0c;在知识星球立了一个Flag&#xff0c;这是总结Leetcode刷题的第五篇图文。 理论部分 C# 中的排序 对集合类的排序&#xff0c;我们通常使用位于 System.Core 程序集&#xff0c;System.Linq命名空间下&#xff0c;Enumerable静态类中的扩展方法。 …

如果有电脑——计算机达人成长之路(36)

5、电脑情缘&#xff08;一&#xff09;王新华的电脑 现在的大学生一般都有一个工具&#xff0c;就是计算机&#xff0c;尤其是计算机科学系的学生&#xff0c;几乎人手一台。对此&#xff0c;木鸿飞只能深深的说上一句&#xff1a;“幸福啊&#xff01;” 现在人可能不能了解这…

Javascript中二进制数据处理方法

Javascript中二进制数据处理方法 转载于:https://www.cnblogs.com/motadou/archive/2012/02/19/2358514.html

正规Java培训机构是什么样的

​ 正规Java培训机构是什么样的?这对于很多想真正学习到java技术的人来说是非常重要的&#xff0c;选择一个适合自己的靠谱的Java培训机构&#xff0c;学有所成工作也是比较稳定的&#xff0c;下面我们来看看详细的介绍。 ​  正规Java培训机构是什么样的?其实对于这个问题…

《40期》 我们要把世纪末日变成重生日

2012年&#xff0e;传说中一个会是世纪末日的一年。&#xff08;ps&#xff1a;电影看多了……- _-!!!&#xff09;&#xff0c;但是寒假过后的北京。天气却是十分的晴朗、出奇的好。而就在今天也就是2012年2月9日40期的开班典礼就选了这一天。地点就是在育荣教学园区2栋教学楼…

LeetCode刷题宝典 V1.0 PDF下载

前段时间&#xff0c;在知识星球立了一个Flag&#xff0c;现在 Flag 的进度为 100%&#xff0c;很是开心。 为了大家学习的方便&#xff0c;所以整理了这份150多页的小册子。可以作为学习数据结构与算法或备考计算机类研究生的参考资料&#xff0c;希望对大家有所帮助。 小册子…

机器学习:信用风险评估评分卡建模方法及原理

#课程介绍 信用风险评分卡为信用风险管理提供了一种有效的、经验性的解决方法&#xff0c;是消费信贷管理中广泛应用的技术手段。 评分卡是信用风险评估领域常见的建模方法。评分卡并不加单对应于某一种机器学习算法&#xff0c;而是一种通用的建模框架&#xff0c;讲原始数据通…

0基础学怎么学习python

​ Python相对于其他编程语言来说是比较简单的&#xff0c;非常适合零基础的小白学习&#xff0c;想要进入到互联网行业&#xff0c;可以优先选择学习Python&#xff0c;那么下面小编就来为大家详细的介绍一下0基础学怎么学习python? ​  0基础学怎么学习python? 1、要读书…

nginx技术(2)nginx的配置详解

nginx的配置 1&#xff0c;启动nginx 1234567[rootcentos6 nginx-1.2.9]# /usr/sbin/nginx -c /etc/nginx/nginx.conf 启动nginx [rootcentos6 nginx-1.2.9]# ps -ef|grep nginx 查看进程 root 5479 1 0 04:15 ? 00:00:00 nginx: master process /usr/sbin/nginx -…

javascript 基础篇2 数据类型,语句,函数

文章里如果有错误的话&#xff0c;希望能帮忙指正~我也是边看视频边学习中&#xff0c;这个算是个笔记吧~自认为总结出来的东西比看视频要节省点时间~能帮到别人最好了~帮不到也起码恩能帮到我自己 嘿~ 写内容之前废话一句&#xff1a;因为旧版有些浏览器不支持javascript脚本&…

技术图文:如何在Python中定义二维数组?

背景 前几天&#xff0c;有位同学问我如下的问题&#xff1a; “temp[0][0]修改后&#xff0c;为什么temp[1][0]、temp[2][0]也发生了变化&#xff1f;” “在Python中二维数组是怎样定义和使用的&#xff1f;” 今天就来谈谈这个问题。 技术分析 在 C# 语言中有直接定义二…

javascript的垃圾回收机制指的是什么

定义&#xff1a;指一块被分配的内存既不能使用&#xff0c;又不能回收&#xff0c;直到浏览器进程结束。 像 C 这样的编程语言&#xff0c;具有低级内存管理原语&#xff0c;如 malloc()和 free()。开发人员使用这些原语显式地对操作系统的内存进行分配和释放。 而 JavaScript…

技术图文:Matlab向量 VS. Python列表

背景 前段时间在知识星球上立了一个Flag&#xff0c;至少写10篇关于 Python&#xff0c;Matlab 和 C# 对比的总结。这是第 1 篇&#xff0c;从创建结构、添加元素、删除元素、获取元素四个角度来对比 Matlab 的向量与 Python 的列表。 1. 向量/列表 的创建 1.1 直接法 Matla…

我的ExtJS学习之路 ——4

项目基本架子出来&#xff0c;然后就该考虑将封装好的gridpanel 和 tabpanel关联起来 既 点击树的叶子节点&#xff0c;将 gridpanel 展现在 tabpanel中 怎么关联呢&#xff1f; 【在之前的基础上的&#xff0c;重复的代码就不贴出来了】 我改变了 模拟数据的形式&#xff0c;注…

php CI框架输出空行问题排查

今天在使用 curl 命令行工具调试一个功能时&#xff0c;发现输出的内容总是会在最开始莫名其妙的多一行空行&#xff1a; 项目框架是 php 的 CodeIgniter&#xff0c;感觉这种问题在网上不好查找&#xff0c;因为可以确定这个是业务出现的问题&#xff0c;然后只能自己去定位查…

哪些人适合学习软件测试

软件测试相对于其他编程语言来说&#xff0c;它的入门门槛是相对比较低的&#xff0c;想要从事IT互联网行业可以选择学习软件测试&#xff0c;那么都有哪些人适合学习软件测试呢?来看看下面的详细介绍吧。 哪些人适合学习软件测试?就在软件测试培训行业观察来看&#xff0c;小…

c语言基本函数

一.内存操作函数&#xff1a; &#xff08;1&#xff09; 头文件&#xff1a;#include <string.h>memset() 函数用来将指定内存的前n个字节设置为特定的值&#xff0c;其原型为&#xff1a; void * memset( void * ptr, int value, size_t num );参数说明&#xff1a;…

技术图文:Python 匿名函数 VS. C# Lambda表达式

背景 前段时间在知识星球上立了一个Flag&#xff0c;至少写10篇关于 Python&#xff0c;Matlab 和 C# 对比的总结。 这是第 2 篇&#xff0c;从定义和应用两个角度来对比 Python 的匿名函数 与 C# 的Lambda表达式。 匿名函数/Lambda表达式的定义 Python 匿名函数 在 Python…