首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java final 修饰变量_final关键字修饰变量

参考链接: Java final关键字 Java中被final修饰的变量为常量,它只能被赋值一次,也就是说final修饰的变量一旦被赋值,其值不能改变。如果再次对该变量进行赋值,则程序会在编译时报错。...public class Example {  public static void main(String[] args) {  final int num = 100;  num = 4;  }  ...原因在于变量num 被final修饰。由此可见,被final修饰的变量为常量,它只能被赋值一次,其值不可改变。  被final关键字修饰的变量为局部变量。...这是因为使用final关键字修饰成员变量时,虚拟机不会对其进行初始化。...因此使用final修饰成员变量时,需要在定义变量的同时赋予一个初始值,下面将第2行代码修改为:final String name="小海绵"; //为final 关键字修饰的name 属性赋值  运行结果

75920

详解 final 修饰符

当被问到 final 修饰符,我们通常会随口而出以下3句话: 被 final 修饰的变量被赋初始值后,不能再重新赋值 被 final 修饰的方法不能被重写 被 final 修饰的类不能被继承 仅记住这些..."口诀"是不够的,本文将对 final 的这些功能进行分析 1. final 修饰变量的功能 (1) 被 final 修饰的变量被赋初始值后,不能再重新赋值 被 final 修饰的实例变量必须显示的指定初始值...,其实非final修饰的局部变量也需要显示的赋初始值,只不过被final修饰的局部变量被赋值后就不能重新赋值了。...修饰方法的功能 final修饰方法,用于限制该方法不能被它的子类重写,试图重写final修饰的方法编译就会报错 ?...修饰,编译就会报错,(在Java8之后,匿名内部类访问局部变量,该局部变量可以不用显式的用final修饰,因为java8之后,会默认给匿名内部类要访问的变量用final修饰),实际上,不仅是匿名内部类,

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

    final修饰符的作用

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

    28520

    局部变量修饰为final

    如果我们尝试将被修饰为final的对象重新赋值,编译器就会报错 这么简单的一个关键字,怎么需要强制修饰一个局部变量 局部变量 class文件 public static void main(String...name = "Whoops bug"; int pluginType = 3;} 两个方法一个局部变量修饰为final,一个不修饰为final 通过javap查看字节码 public static...修饰是纯编译时信息,到Class文件里就已经没有踪迹了,JVM根本不会知道方法参数或者局部变量有没有被final修饰 曾经的阿里巴巴规范提出: 推荐】final可提高程序响应效率,声明成final的情况...x = 0; } else { x = 3; } System.err.println(x); } 修饰为final是为了解决正确性...//name = "Whoops bug";} 如果switch遗漏了break,或者switch完整的,在外面给final变量再次赋值,编译器就会报错 类变量 对于final修饰的局部变量有了清晰的认识

    1.7K20

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

    final关键宇可用于修饰类、方法和变量,被它修饰的类、方法和变量不可改变。 final变量 final 成员变量 成员变量是随类初始化或对象初始化而初始化的 。...如果 final 修饰的局部变量在定义时没有指定默认值,则可以在后面代码中对该 final 变量赋初始值,但只能一次,不能重复赋值 ; 如果 final 修饰的局部变量在定义时己经指定默认值,则后面代码中不能再对该变量赋值...; } } final 修饰基本类型变量和引用类型变量的区别 当使用 final 修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变 。...用final修饰的方法的行为在继承期间保持不变,而且不可被重写。...final类 final 修饰的类不可被继承。

    46340

    【小家java】final修饰的变量真的不可变吗?

    每篇一句 穷不练酒,富不占赌 1、概述 这可能是大家的一个共识:如果我们希望这个变量不可变,我们可以用final进行修饰。...但本篇将带你深入了解不变的含义,我相信可以让你更深的了解final的原理,也能记得更牢靠 2、栗子 被final修饰过的变量,只是说栈存储的地址不能再改变,但是却没有说地址指向的内容不能改变。...所以用final修饰,但内容是个对象啥的,然后改变对象属性值,这个不在本文讨论的范围以内。本文想讨论的是,直接就概念final的栈的地址,让它去指向另外一块内存地址。...这里面我解释两个东西: 1、为什么能够撼动final的值? field.getModifiers()&~Modifier.FINAL 这句话就是去掉final。...so,咱们都把它的修饰符干掉,当然可以对Field set值了 所以,java的反射机制直接打破了封装有木有,哈哈哈 2、为什么最终打印的和我们调试的值不一样?

    89820

    final关键字修饰类、变量与方法【总结】

    ​目录一、final 修饰类:封印的 “永恒之石”二、final 修饰变量:锁定的 “不变之值”三、final 修饰方法:不可撼动的 “坚固堡垒”四、总结在 Java 编程的世界里,final 关键字就像一把神奇的...一、final 修饰类:封印的 “永恒之石”当 final 关键字修饰一个类时,这个类就如同被封印的 “永恒之石”,无法被其他类继承。这意味着该类的设计和功能已经固定,不希望被修改或扩展。...1.修饰类:不能被继承例子:工具类是不用被继承的,所以工具类需要加上final 二、final 修饰变量:锁定的 “不变之值”final 修饰基本数据类型变量 当 final 修饰基本数据类型变量时,该变量就成为一个常量...三、final 修饰方法:不可撼动的 “坚固堡垒”当 final 修饰一个方法时,该方法就不能被其子类重写。...2.final修饰方法:方法不能被重写2.final修饰变量:变量有且只能赋值如果是常量就添加这两个单词四、总结通过以上对 final 关键字修饰类、变量和方法的深入探讨,我们可以看到 final 关键字在

    13000

    Java中final关键字与权限修饰符

    一、final简介 1、含义 不可改变的,最终的 2、常见的四种用法 ①修饰一个类; ②修饰一个方法; ③修饰一个局部变量; ④修饰一个成员变量; 二、final使用 1、修饰一个类 格式: 修饰符 final...2、修饰一个方法 格式: 修饰符 final 返回值类型 方法名(){ //…… } 含义: final修饰的方法不能被其子类重写。 abstract与final不能同时使用。...3、修饰一个局部变量 格式: final 数据类型 变量名 = 变量值; 含义: final修饰的变量为常量,不可改变(基本数据类型的数值不可改变,引用数据类型的地址值不可改变); 引用数据类型的地址值不可改变...修饰的基本数据类型变量值不可改变 //备注:final修饰的引用数据类型地址值不可改变 } } 4、修饰一个成员变量 格式: final 数据类型 变量名 = 变量值; 说明:...; ④通过构造方法赋值注意:所有的构造(包括无参构造)都要保证能对final修饰的成员变量进行赋值; 三、权限修饰符

    10910

    【美团一面】为什么用final修饰String

    实现字符串池 线程安全 实现String可以创建HashCode不可变性 final可以修饰类,方法和变量,并且被修饰的类或方法,被final修饰的类不能被继承,即它不能拥有自己的子类,被final修饰的方法不能被重写..., final修饰的变量,无论是类属性、对象属性、形参还是局部变量,都需要进行初始化操作。...在了解final的用途后,在看String为什么要被final修饰:主要是为了”安全性“和”效率“的缘故。...final修饰的String,代表了String的不可继承性,final修饰的char[]代表了被存储的数据不可更改性。...但是:虽然final代表了不可变,但仅仅是引用地址不可变,并不代表了数组本身不会变,。

    16210

    【美团一面】为什么用final修饰String

    实现字符串池 线程安全 实现String可以创建HashCode不可变性 final可以修饰类,方法和变量,并且被修饰的类或方法,被final修饰的类不能被继承,即它不能拥有自己的子类,被final修饰的方法不能被重写..., final修饰的变量,无论是类属性、对象属性、形参还是局部变量,都需要进行初始化操作。...在了解final的用途后,在看String为什么要被final修饰:主要是为了”安全性“和”效率“的缘故。...final修饰的String,代表了String的不可继承性,final修饰的char[]代表了被存储的数据不可更改性。...但是:虽然final代表了不可变,但仅仅是引用地址不可变,并不代表了数组本身不会变,。

    1.6K21

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

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

    28030

    深入理解Java-final关键字1 修饰属性或者变量2 修饰方法3 修饰类4 final关键字的好处5 不可变类6其他重要知识点

    ,所以用final修饰引用类型变量指的是它里面的地址不能变,即它只能指向初始时指向的那个对象,而不关心指向的对象内容的变化 所以修饰的变量必须被初始化 public static final String...构造方法中,但静态final实例变量不可以在其中 final变量是只读的 2 修饰方法 该方法可被继承,但不许被任何子类重写 当调用final方法时,直接将方法主体插入到调用处,而不是进行方法调用,这样能提高程序效率..."cheap personal loan"; //compilation error: overridden method is final } } 3 修饰类 使用final来修饰的类叫作final...final修饰 final class PersonalLoan{ } class CheapPersonalLoan extends PersonalLoan{ //compilation error...: cannot inherit from final class } 一个类不可同时被abstract和final修饰 思考一个有趣的现象: byte b1=1; byte b2=3; byte

    86260

    【Java】final关键字&权限修饰符&内部类&引用类型用法

    本期介绍 本期主要介绍final关键字&权限修饰符&内部类&引用类型用法 文章目录 1. final关键字 1.1 概述 1.2 使用方式 2....为了避免这种随意改写的情况, Java 提供了 final 关键字, 用于修饰 不可改变 内容。 fifinal : 不可改变。可以用于修饰类、方法和变量。...1.2 使用方式 修饰类 格式如下: 查询 API 发现像 public final class String 、 public final class Math 、 public...final class Scanner 等,很多我们学习过的类,都是被 fifinal 修饰的,目的就是供我们使用,而不让我们所以改变其内 容。...修饰方法 格式如下: 重写被 final 修饰的方法,编译时就会报错。 修饰变量 1.

    45350
    领券