学习
实践
活动
工具
TVP
写文章

详解 final 修饰符

当被问到 final 修饰符,我们通常会随口而出以下3句话: 被 final 修饰的变量被赋初始值后,不能再重新赋值 被 final 修饰的方法不能被重写 被 final 修饰的类不能被继承 仅记住这些 "口诀"是不够的,本文将对 final 的这些功能进行分析 1. final 修饰变量的功能 (1) 被 final 修饰的变量被赋初始值后,不能再重新赋值 被 final 修饰的实例变量必须显示的指定初始值 ,而且只能在以下3个位置指定初始值: 定义final实例变量时指定初始值 在非静态代码块中为final实例变量指定初始值 在构造器中为final实例变量指定初始值 看如下代码: public class 即使是普通内部类,在其中访问局部变量,该局部变量都需要显式的或者隐式的(Java8之后)用final修饰 需要注意的是,我们说内部类访问局部变量,需要给该变量加final修饰符,这里的内部类指的是局部内部类 修饰符修饰

31840

final修饰符的作用

final修饰变量 - final修饰变量的时候,表示该变量的值不可改变,成为常量。 基本数据类型的final特征 - final修饰符可以修饰静态变量、实例变量和局部变量,分别表示静态常量、实例常量和局部常量。 - final类型的变量必须显式地初始化,否则将导致编译错误。 - final变量只能被赋值一次。 - 在定义final常量时,一般以大写字母命名,且多个单词之间使用下划线“_”隔开  解析:         基本数据类型的final,拥有哪些特征呢,final修饰符可以修饰静态变量,可以修饰实例变量 还有要注意的两点:第一是常量必须要进行初始化,第二final只能被赋值一次,因为他不可以改变,final     修饰的常量不允许改变。

7420
  • 广告
    关闭

    2022腾讯全球数字生态大会

    11月30-12月1日,邀您一起“数实创新,产业共进”!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java修饰符final小笔记

    final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。 1 final 变量 final 表示"最后的、最终的"含义,变量一旦赋值后,不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值。final 变量能被显式地初始化并且只能初始化一次。 final 修饰符通常和 static 修饰符一起使用来创建类常量。 修饰符声明方法。 修饰符声明的类。

    10020

    java中的修饰符final和static

    参考链接: Java中的可访问和非访问修饰符 1.final 修饰类时表明该类不能被继承,自然类中的方法默认是final型的。  2.final 修饰方法时不允许被子类覆盖,也就是可以被继承。 一个final类中,一个final方法只能被实现一次。  Final类中的成员变量只要没有添加final修饰都可以照常操作。 这都是因为final类型变量必须在使用之前初始化。 传递的实参数如果是final 型,而形参不要求则很容易理解。形参的改变与实参无关。如果需要传递的形参是final型,则试图改变形参值。会出错。

    18500

    Java Review (十二、面向对象----final 修饰符)

    final关键宇可用于修饰类、方法和变量,被它修饰的类、方法和变量不可改变。 final变量 final 成员变量 成员变量是随类初始化或对象初始化而初始化的 。 final String str; final int c; final static double d ; //既没有指定默认值 ,又没有在初始化块、构造器中指定初始值 如果 final 修饰的局部变量在定义时没有指定默认值,则可以在后面代码中对该 final 变量赋初始值,但只能一次,不能重复赋值 ; 如果 final 修饰的局部变量在定义时己经指定默认值,则后面代码中不能再对该变量赋值 finalfinal 修饰的类不可被继承。 使用 private 和 final 修饰符来修饰该类的成员变量。 提供带参数构造器,用于根据传入参数来初始化类里的成员变量 。

    18840

    JavaSE(三)之static、final、abstract修饰符

    一、static修饰符 1.1、static变量         在类中,使用static修饰的成员变量,就是静态变量,反之为非静态变量。          修饰符 2.1、修饰类         用final修饰的类不能被继承,没有子类。          我们也可以定义final修饰的类: 1 public final class Action{ 2 3 } 4 abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。   这部分是方法的实现,如果大括号中什么都没写,就叫方法的空实现           声明类的同时,加上abstract修饰符就是抽象类  声明方法的时候,加上abstract修饰符,并且去掉方法的大口号

    34550

    关闭Idea自动生成变量时添加的final修饰符

    后来偶然尝试知道了如何关闭这个功能——就是在下次生成变量时,注意变量上方弹出的Tip(提示信息),上面勾选了Declare final选项。 如果点选完弹出的选项,直接用鼠标点到其他位置,是不能触发选项配置修改动作的,下次自动生成变量还会带上final。 此时新的配置就应用上了。下次再自动生成变量就不会添加final修饰符

    1.8K30

    【Java_10】final 关键字、权限修饰符、内部类

    一、final 关键字 1. final 用于修饰不可改变的内容 ① 修饰类,被修饰的类不能被继承。 ② 修饰方法,被修饰的方法不能被重写。 ③ 修饰变量,被修饰的变量不能重新赋值。 2. final 的使用 ① 修饰类 * final class 类名{ ··· } ② 修饰方法 * final 返回值类型 方法名( 参数列表 ) { ··· } ③ 修饰变量 * final 数据类型 变量名; 二、权限修饰符 | | 同一个类中 | 同一个包中 | 不同包的子类 | 不同包的无关类 | | public | ✓ | ✓ | ✓ | ✓ | | protected 局部内部类 ① 格式 class 类名 { 修饰符 返回值类型 方法名( 参数列表 ) { class 类名 { //局部内部类 ,final 可以省略 # * 局部内部内在堆中,局部变量在栈中,方法出栈后,局部变量消失,局部内部类等待 JVM 回收 3.

    14330

    final

    final修饰类:表示该类不能被继承 final修饰属性:表示该属性必须被赋值一次 final修饰方法:表示该方法可以被子类继承,但是不能被子类重写 1 class A{ 2 final public int i;//报错 3 //被final修饰的变量叫做常变量(固定不变),必须被赋值且只能赋值一次,哪怕第二次赋值跟第一个赋值一样也不行 4 //不能放在普通方法里赋值,因为可能不会调用这个普通方法

    21220

    final

    final修饰的类不可以被继承,但可以继承其他的类。 final修饰的方法,子类可以继承但是不能重写。 子类重写父类的非final方法可以加上final。 被final修饰的基本数据类型或者String类型的变量可以看作是常量,赋值后不能改变。 被final修饰的引用数据类型变量的引用内存地址值不能改变,可以改变引用数据类型变量的属性值。 被final修饰的普通成员变量必须在对象创建完成前进行赋值,可以直接赋值,如果没有直接赋值则需要用构造方法进行赋值,如果有多个构造方法则多个构造方法都要为其赋值,但是不能用set方法赋值。 被final修饰的静态成员变量必须要直接赋值或者静态代码块赋值,否则编译不通过。 final修饰的成员变量会在编译阶段赋默认值,final固定的是成员变量的手动赋值不是内存中的默认值。 Q.E.D.

    6610

    java学习之路:27.final变量,final方法,final

    1.final变量 final关键字可用于变量声明,一旦改变了被设定,就不可以再改变该变量的值。通常,由final定义的变量为常量。 final关键字定义的变量必须在声明时对其进行赋值操作,final除了可以修饰基本数组类型的常量,还可以修饰对象引用。 final double PI = 3.14; final Test test = new Test(); final int[] a ={1,2,3,4,5,6}; 一旦一个对象引用被修饰为final 2.final方法 final的方法不能被重写。 一个定义为private的方法隐式被指定为final类型。 3.final类 定义为final的类不能被继承,如果将某个类设置为final形式,则类中的所有方法都被隐式的设置为final形式,但是final类中的成员变量可以被定义为final或者非final形式

    55741

    话说const修饰符与static修饰符

    这也是面试和笔试中经常会考到的问题,特别是static我面试了四家就考了两家,但是一般会放在前两题,属于特别基础的题目了。

    48710

    java修饰符

    java中的修饰符分为两大类:权限修饰符和状态修饰符 1.权限修饰符 ? 2.状态修饰符 final final修饰基本数据类型时,其数据值不能发生改变,变成了常量 final修饰引用数据类型时,其地址值不能发生改变,内容可改变 static 被类的所有对象所共享的用

    19420

    事件修饰符

    冒泡.gif 事件修饰符 vue提供了事件修饰符,可以修改默认的事件触发机制: .stop 阻止冒泡 .prevent 阻止默认事件 .capture 添加事件侦听器时使用事件捕获模式

    23940

    java修饰符

    一、访问修饰符 1.1 private访问控制符 当前类访问权限 如果一个成员方法或成员变量名前 使用了 private 访问控制符,那么这个成员只能在这个类的内部使用。 二、非访问修饰符 2.1 static修饰符 用来修饰类方法和类变量。static的真正作用就是用于区分Field、方法、内部类、初始化块这四种成员到底属于类本身还是属于实例。 所以静态成员不能直接访问 2.2 final修饰符 意思是最终的、不可修改的,最见不得变化,用来修饰类、方法和变量 2.2.1特点 final修饰的类不能被继承,final类中的所有成员方法都会被隐式地指定为 final方法; final修饰的方法不能被重写; final修饰的变量是常量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象 2.3 abstract修饰符 abstract 修饰符,用来创建抽象类和抽象方法。

    9350

    java修饰符

    Java语言提供了很多修饰符,主要分为以下两类 访问修饰符, 非访问修饰符 修饰符用来定义类,方法或者变量,通常房子语句的最前端 访问控制修饰符 Java中,可以使用访问控制符来保护对类,变量,方法和构造方法的访问 default,即缺省,什么也不写,在同一包内可见,不使用任何修饰符,使用对象,类,接口,变量,方法。 private,在同一类内可见,使用对象,变量,方法,注意不能修饰类 public,对所有类可见,使用对象,类,接口,变量,方法 protected 使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的

    31740

    final、abstract、interface

    final 关键字 ·修饰类:   不能继承。 ·修饰变量:不能改变其值,经常一起使用static和final来指定一个变量。 ·修饰方法:不能被覆盖的方法。 ·接口也可以包含基本数据类型的数据成员,但它们都默认为static和final(故接口中不能定义变量)。 java允许我们创建“空白的final”,它们属于一些特殊的字段。 尽管被声明为final,但却未得到一个初始值。空白final必须在实际使用前得到正确的初始化(在构造器中)。空白的final具备有很到的灵活性。 例如:位于类内部的一个final字段现在对每个对象都可以有所不同,同时依然保持其“不变”的本质。 接口这样描述自己:“对于实现我的所有类,看起来都应该像我现在的样子”。

    24210

    TCTF Final WP

    上周末有幸作为队内挂件打了tctf final,我看的第一题就是这个SecureJIT,踩了巨多坑,才搞出来=。= ? 前方干货警告!

    20530

    LaTeX修饰符

    【注】摘自 Scott Pakin 的 《The Comprehensive LaTeX Symbol List》 。

    8310

    扫码关注腾讯云开发者

    领取腾讯云代金券