`
aijuans
  • 浏览: 1547202 次
社区版块
存档分类
最新评论

您掌握了final关键字吗?

阅读更多

Java中,final关键字可以修饰变量,方法和类。它们表达的意义如下:

1:修饰变量:该变量赋值之后不可再修改或重新赋值,这种变量可以当成常量使用

2:修饰方法:方法不可被重写

3:修饰类:类不可被继承

本篇文章老谭专门探讨一下第一种情况。

1,  final变量的赋值:

1
2
3
4
5
6
public class FinalDemo {
         final int NUM;
         void m1() {
                   final int NUM1;
         }

该段代码编译不会成功。final修饰的类成员NUM是必须与声明时同时赋值的,即要使用如下语句:

1
final int NUM=20;

final修饰方法中的局部变量则无需同时赋初始值,可以在使用之前赋值,但不可多次赋值。

但是可以使用初始化块为final修饰的类成员赋值,而且实例初始化块甚至可以出现在类成员声明之前:

1
2
3
4
5
6
7
8
9
public class FinalDemo {
         final int NUM;
        {
            NUM=20;
        }
         void m1() {
            final int NUM1;
         }

类似的,如果finalstatic同时使用的话,则应该使用静态初始化块为该成员赋值。

 

2,  final修饰引用类型数据:

假设有以下两个类:

1
2
3
4
5
6
7
8
9
10
pubic class User{
         int num;
}
public class FinalDemo {
        final User user=new User();
        public static void main(String[] args) {
               FinalDemo demo=new FinalDemo();
               demo.user=new User();
        

编译时demo.user=new User();这句代码会出现编译错误,因为userfinal修饰的,不可重新赋值。但是以下代码能够成功编译:

1
2
3
4
5
6
7
public class FinalDemo {
         final User user=new User();
        public static void main(String[] args) {
                           FinalDemo demo=new FinalDemo();
                           demo.user.num=30;
        

final变量中的非final属性是可以重新赋值的。

2
2
分享到:
评论

相关推荐

    Java零基础-final关键字.md

    掌握在Java程序中使用final关键字的基本技巧。 理解final关键字在构造方法、类、方法和变量等不同位置的应用。 了解final关键字的一些规则,如final变量的初始化、final方法的重写和final类的继承等。 阅读建议: ...

    PHP开发者必须掌握的6个关键字

    任何PHP开发人员在使用面向对象构建WEB应用程序时,都需要掌握6个关键字,他们分别是: 1.Private2.Public3.Protected4.Static5.Final6.Abstract 对于前三个关键字,他们在类内部访问关系如下图:  Private...

    第三章 继承与多态 掌握封装的含义及用法 什么是继承? 继承有什么作用? 怎么写继承?

    第三章 继承与多态 掌握封装的含义及用法 什么是继承? 继承有什么作用? 怎么写继承? 1.继承的概念及其用法 2.方法的重写及重载与其的区别 3.多态及其应用 4.super关键字 5.final关键字

    Java中static、this、super、final用法

    本篇旨在帮助准备学习Java以及刚接触Java的朋友认识、掌握和使用static、this、super、final这几个关键字的使用。文中难免有不妥之处,欢迎指正。

    Java面试题深入解析:在互联网公司面试程序员需要留意的六个问题.docx

    final关键字的作用是什么?等等。 ## 2. 面向对象编程 Java是一种面向对象的编程语言,因此Java程序员需要掌握面向对象编程的相关知识,包括类、对象、继承、接口、多态等等。在面试中,面试官可能会问及Java中的...

    Java 面向对象(继承、多态).ppt

    面向对象的概念 掌握类的继承、方法重写、super关键字的使用、final关键字 熟悉面向对象继承和多态的概念

    Java中static、this、super、final用法简谈

    本篇旨在帮助准备学习Java以及刚接触Java的朋友认识、掌握和使用static、this、super、final这几个关键字的使用。Java博大精深,我也是一位正在学习和使用Java的爱好者,文中难免有不妥之处,欢迎指正。

    实验项目C、面向抽象和面向接口编程

    4、理解final关键字。 5、掌握和理解多态的运用。 ★专题:接口基础和面向接口编程★ 1、掌握接口的使用。 2、掌握和理解接口实现多态的运用。 3、理解和掌握匿名类的用法。 4、初步了解JDK8新特性和lambda表达式。...

    Java 面向对象(继承、多态、接口、异常).ppt

    掌握类的继承、方法重写、super关键字的使用、final关键字、抽象类和接口、多态的使用以及异常的处理方式 熟悉面向对象继承和多态的概念

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    final关键字特性 Java类和包 抽象类和接口 代码块和代码执行顺序 Java自动拆箱装箱里隐藏的秘密 Java中的Class类和Object类 Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解和最佳实践 JavaIO流 多线程 深入...

    实验四:Java继承与接口

    本次实验理解继承原理与机制及类继承的声明方法,掌握了成员变量的隐藏及方法的重写和抽象类与抽象方法,掌握了super和final关键字,理解了多态的内涵及实现代码,掌握接口的声明和使用等。

    编程技能训练与等级考试辅导:继承、super关键字.pptx

    使用final修饰常量、不可覆盖的方法和不可继承的类 理解多态性、动态绑定 理解并掌握toString(),equals()方法的重写.;理解父类与子类概念 利用继承性由父类创建子类 使用super调用父类构造方法和方法 ;5;6;7;class ...

    JAVA面试题最全集

    修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被...

    Java的六大问题你都懂了吗

     四、final关键字到底修饰了什么?  final使得被修饰的变量"不变",但是由于对象型变量的本质是"引用",使得"不变"也有了两种含义:引用本身的不变,和引用指向的对象不变。  引用本身的不变:  final ...

    《Java程序设计案例教程》教学课件02Java语言基础.pptx

    public、class、static、void、final、double和int都是关键字;"{}、()、[]、;"和"."都是分隔符;radius和 perimeter是变量;PI是常量;double和int属于基本数据类型;PI*radius涉及数据类型转换;=、*和+都是...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    11.2.4 理解final关键字 296 11.2.5 总结:类的修饰符 297 11.3 方法的修饰符 297 11.3.1 方法的访问控制符 298 11.3.2 public:没有限制的修饰符 299 11.3.3 protected:仅对子类和同包的类可见 300 11.3.4 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    11.2.4 理解final关键字 296 11.2.5 总结:类的修饰符 297 11.3 方法的修饰符 297 11.3.1 方法的访问控制符 298 11.3.2 public:没有限制的修饰符 299 11.3.3 protected:仅对子类和同包的类可见 300 11.3.4 ...

    跟汤老师学Java(第9季):抽象类和接口

    本课程从零开始,以通俗易懂的方式讲解Java入门,手把手教你掌握每一个知识点,真正做到零基础入门...课程内容包括:1.final关键字2.抽象类3.练习:租车系统4.接口简介5.接口的特性6.接口的作用7.接口和抽象类的比较

Global site tag (gtag.js) - Google Analytics