Java中的final关键字详细介绍
•final变量
如果在变量前加final关键字,则这个变量一旦被初始化,便不可再改变。
如果一个final变量是类成员变量,则必须被初始化,且只能被初始化一次。
方法中的参数也可以是final变量。这在我们需要传递引用型的变量时非常有用,因为有时候我们并不希望调用函数修改该变量而影响到原函数中对象的值。因此将引用型变量设为final类型可以有效方式变量被调用参数修改。此时在调用方法中只可以使用该变量,但不能对其做任何修改。
void test(final int a){
//can not modify a
}
•final方法
若一个类中的某个方法是final的,则该类的子类可以直接使用这个方法,但不能覆盖这个方法。
有些编译器会再调用final方法时,直接将final方法的主体插到调用处来提高效率,而不是采用保存断点、压栈等常规方法。
•final类
如果一个类是final的,那么它不能被继承。因此final类是一个叶子类,它不能是abstract的。final类中的方法肯定是final的(但并不需要在方法中显式添加final关键字,当然添加也无所谓),final类的变量可以是final或非final的。
相关推荐
-
java 中的static关键字和final关键字的不同之处
static 1.在类中,用static修饰的属性,称为静态属性.为这个类的所有对象所共有,存放在静态存储区,所有该类的对象都可以访问且访问的都是同一变量.可以用作计数器,来统计总共创建了多少个各类的对象. 2.在类中,用static 修饰的方法为静态方法,在静态方法中不可以访问非静态的属性和方法,但在非静态方法中可以访问静态方法和属性:且static方法多态失效,不能使用this. 3.由于静态属性和方法是属于该类的所有对象的,所以可以用类名.静态属性/方法名---来访问. 4.static
-
深入解析Java编程中final关键字的作用
final class 当一个类被定义成final class,表示该类的不能被其他类继承,即不能用在extends之后.否则在编译期间就会得到错误. package com.iderzheng.finalkeyword; public final class FinalClass { } // Error: cannot inherit from final class PackageClass extends FinalClass { } Java支持把class定义成final,似乎违背了
-
Java中的final关键字详解及实例
Java中的final关键字 1.修饰类的成员变量 这是final的主要用途之一,和C/C++的const,即该成员被修饰为常量,意味着不可修改. 上面的代码对age进行初始化后就不可再次赋值,否则编译时会报类似上图的错误. 如果修饰的是引用类型的变量,那么初始化后就不能让他指向另一个对象,如下图所示 2.修饰方法 用final关键字修饰的方法是不能被该类的子类override(重写),因此,如果在想明确禁止 该方法在子类中被覆盖的情况下才将方法设置为final的. 注:类的private方法会
-
java final 和instanceof 关键字的区别
final 可以适用的范围:修饰类:使用这种修饰符的类无法被继承 修饰函数:被修饰的不能被重写 修饰属性:1.final修饰的成员变量是常量,值不能被修改 而java的命名规则:常量都要大写 当形参变量使用final修饰基本类型变量,在函数中该变量不能被修改 引用类型变量:不能改变地址 复制代码 代码如下: /* final class A{ public final void eat(){ System.out.println("测试"); }
-
详解Java中的final关键字的使用
final含义 final是Java中的一个保留关键字,可以声明成员变量.方法和类.一旦你将引用声明为final类型,你将不能再改变这个引用了.编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误. final变量 凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫做final变量.下面是final修饰变量的例子: final int constValue = 1; // constValue = 2; The final local v
-
深入解析Java编程中final关键字的使用
在Java中声明属性.方法和类时,可使用关键字final来修饰.final变量即为常量,只能赋值一次:final方法不能被子类重写:final类不能被继承. 1.final成员 声明 final 字段有助于优化器作出更好的优化决定,因为如果编译器知道字段的值不会更改,那么它能安全地在寄存器中高速缓存该值.final 字段还通过让编译器强制该字段为只读来提供额外的安全级别. 1.1关于final成员赋值 1)在java中,普通变量可默认初始化.但是final类型的变量必须显式地初始化. 2
-
Java中final关键字详解
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. 主要介绍:一.final关键字的基本用法.二.深入理解final关键字 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类 当用final修饰一个类时,表明这个类不能
-
详解Java编程中static关键字和final关键字的使用
Java static关键字以及Java静态变量和静态方法 static 修饰符能够与变量.方法一起使用,表示是"静态"的. 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法.静态变量与实例变量不同,实例变量总是通过对象来访问,因为它们的值在对象和对象之间有所不同. 请看下面的例子: public class Demo { static int i = 10; int j; Demo() { this.j
-
Java中final关键字的用法总结
1.final修饰类 被final修饰的类不能被继承,因此final类的成员方法也不能被覆写,被final关键字修饰的类没有子类,因此类的实现细节也无法改变,无法被扩展.final类中的所有成员方法都会被隐式地指定为final方法,final类中的成员变量可以根据需要设为final. 2.final修饰方法 一个类中的方法如果被final关键字修饰,则其子类无法覆写该方法,只能被子类继承.如果父类中的某个方法不想被其子类所覆写,可将该方法定义为final类型,另外,父类中的私有方法(即被priv
-
java关键字final使用方法详解
它所表示的是"这部分是无法修改的".不想被改变的原因有两个:效率.设计.使用到final的有三种情况:数据.方法.类. 一. final数据 有时候数据的恒定不变是很有用的,它能够减轻系统运行时的负担.对于这些恒定不变的数据我可以叫做"常量"."常量"主要应用与以下两个地方:1.编译期常量,永远不可改变.2.运行期初始化时,我们希望它不会被改变.对于编译期常量,它在类加载的过程就已经完成了初始化,所以当类加载完成后是不可更改的,编译期可以将它代入
-
java中final关键字使用示例详解
final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的.final关键字的含义?final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误.什么是final变量?凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量.final变量经常和static关键字一起使用,
-
JAVA中的final关键字用法实例详解
本文实例讲述了JAVA中的final关键字用法.分享给大家供大家参考,具体如下: 根据上下文环境,java的关键字final也存在着细微的区别,但通常指的是"这是无法改变的."不想改变的理由有两种:一种是效率,另一种是设计.由于两个原因相差很远,所以关键子final可能被误用. 接下来介绍一下使用到final的三中情况:数据,方法,类 final数据 许多编程语言都有某种方法,来向编译器告知一块数据是恒定不变的.有时数据的恒定不变是很有用的,例如: 1. 一个编译时恒定不变的常量 2.
随机推荐
- Mysql 日期时间 DATE_FORMAT(date,format)
- CentOS7系统下用YUM安装Nginx详解
- iOS实现图片存在本地、再从本地获取图片的功能
- javascript dom追加内容实现示例
- JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
- go语言实现的memcache协议服务的方法
- MySQL5.1忘记root密码的解决办法(亲测)
- Linux 使用init命令实现关机,重启,切换模式
- SQL Server 2000的安全配置
- 关于文本框的一些限制控制总结~~
- 使用Java实现系统托盘功能的介绍(附源码以及截图)
- dedecms实现仿downkr的sitemap效果代码
- 解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
- 分析python动态规划的递归、非递归实现
- 在Window系统下安装Netbeans9的方法
- vue使用jsonp抓取qq音乐数据的方法
- 浅谈Java消息队列总结篇(ActiveMQ、RabbitMQ、ZeroMQ、Kafka)
- 详解Vue.js中引入图片路径的几种方式
- 嵌入式移植docker报错问题(汇总)
- Vue props用法详解(小结)