首页
学习
活动
专区
工具
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 属性赋值  运行结果

69520

详解 final 修饰

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

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

局部变量修饰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.6K20

final修饰符的作用

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

25320

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

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

43740

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

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

75320

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

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

14410

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

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

1.4K21

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

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

24830

深入理解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

83060

【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.

38950

lambda表达式中使用的变量如何一定要有final修饰

编译报错:Variable used in lambda expression should be final or effectively final 这句话的意思是,lambda 表达式中使用的变量应该是...变量,但是final并没有声明为final类型,然而代码却能够编译通过。...这是因为 Java8 之后,在匿名类或Lambda表达式中访问的局部变量,如果不是final类型的话,编译器自动加上final修饰符。 即 Java8 新特性:effectively final。...3.2 为何还需要用final修饰? 其实复制变量的方式会造成一个数据不一致的问题。...在执行方法的时候局部变量的值改变了却无法通知匿名内部类的变量,随着程序的运行,就会导致程序运行的结果与预期不同,于是使用final修饰这个变量,使它成为一个常量,这样就保证了数据的一致性。

34140
领券