前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java中`final`关键字的使用场景与区别详解

Java中`final`关键字的使用场景与区别详解

作者头像
默 语
发布于 2025-05-21 07:01:23
发布于 2025-05-21 07:01:23
15100
代码可运行
举报
文章被收录于专栏:JAVAJAVA
运行总次数:0
代码可运行
Java中`final`关键字的使用场景与区别详解

Java中final关键字的使用场景与区别详解

摘要

Java中,final关键字是一个非常重要的修饰符,具有多种使用场景。它不仅用于变量的声明,还可以修饰方法、类以及方法参数。理解final的作用和区别对初学者来说至关重要,本文将通过详细的讲解和代码示例,帮助大家全面了解final关键字的使用场景,并详细解释其背后的原理和实际应用。为了让你更好地掌握这些知识,最后别忘了加我的微信,我们一起交流学习!🤝


引言

Java是一门面向对象的编程语言,在日常开发中,我们会使用各种修饰符来控制程序的行为。final就是其中一个非常重要的关键字,它用于指定不可修改的内容。这个关键字在许多情况下都有用武之地,比如确保常量不变、阻止方法被重写或防止类被继承等。对初学者来说,final的含义可能有点抽象,本文将通过多种场景来为大家逐一解释。


1. final修饰变量

在Java中,final可以用来修饰 变量,使得该变量成为常量。一旦被赋值之后,final变量就不允许再改变其值。这是final最常见的使用场景之一,通常用于定义常量。

1.1 final变量的作用
  • 基本数据类型:当final修饰一个基本数据类型时,它的值在赋值后就不能再修改。
  • 引用类型:当final修饰一个引用类型时,引用本身不能被修改,但引用的对象的内容是可以修改的。
代码示例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class FinalVariableExample {
    public static void main(String[] args) {
        final int number = 10;  // 基本数据类型
        // number = 20;  // 错误,final变量不可修改

        final StringBuilder builder = new StringBuilder("Hello");
        builder.append(", World!");  // 可以修改对象内容
        System.out.println(builder.toString());  // 输出: Hello, World!
        
        // builder = new StringBuilder("New String");  // 错误,不能重新赋值对象
    }
}
1.2 常量命名规范

在Java中,通常会将final变量命名为全大写字母,并用下划线分隔,以便于区分常量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class FinalConstantExample {
    public static void main(String[] args) {
        final int MAX_SIZE = 100;  // 常量
        System.out.println(MAX_SIZE);  // 输出: 100
    }
}

2. final修饰方法

final关键字还可以用来修饰 方法,表示该方法不能被子类重写。这对于需要保证方法行为不变的情况非常有用。

2.1 final方法的作用

当一个方法被声明为final时,子类不能重写该方法。这样可以防止子类修改或改变父类的方法行为。

代码示例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Parent {
    public final void show() {
        System.out.println("This is a final method.");
    }
}

class Child extends Parent {
    // public void show() {  // 错误,不能重写final方法
    //     System.out.println("Child method.");
    // }
}
2.2 final方法的应用场景

final方法通常用于提供一个稳定且不希望被修改的行为,例如一些核心功能方法、工具类方法等。


3. final修饰类

final还可以修饰 ,表示该类不能被继承。这样可以防止类被子类化,确保类的实现不被修改。

3.1 final类的作用

当一个类被声明为final时,其他类不能继承这个类。final类通常用于防止继承,例如:String类就是一个final类。

代码示例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
final class FinalClass {
    public void display() {
        System.out.println("This is a final class.");
    }
}

// class SubClass extends FinalClass {  // 错误,无法继承final类
// }
3.2 为什么使用final类?

final类通常用来表示不可修改的设计,防止它被子类化和重写。例如,String类不可变,保证了它的稳定性和线程安全性。


4. final修饰方法参数

final还可以修饰方法的 参数,这表示在方法体内该参数不能被修改。虽然这种情况在实际应用中较少,但有时它可以防止方法中意外改变参数值。

4.1 final方法参数的作用

当参数被声明为final时,在方法体内无法修改该参数的值。这有助于提高代码的可读性和可维护性,尤其在大型项目中。

代码示例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class FinalParameterExample {
    public static void main(String[] args) {
        int result = add(10, 20);
        System.out.println(result);  // 输出: 30
    }

    // 方法参数被final修饰,防止在方法内部修改
    public static int add(final int a, final int b) {
        // a = 20;  // 错误,不能修改final参数
        return a + b;
    }
}

5. final的综合应用

通过将final与其他修饰符结合使用,我们可以得到更加灵活和安全的设计。例如,可以结合finalstatic使用来创建常量,结合finalabstract使用来防止方法重写。

5.1 finalstatic结合使用
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class FinalStaticExample {
    public static void main(String[] args) {
        System.out.println(MyClass.CONSTANT);  // 输出: 100
    }
}

class MyClass {
    public static final int CONSTANT = 100;  // 常量
}

总结

通过本文的详细讲解,我们已经覆盖了final关键字的主要使用场景和区别。总结如下:

  • final修饰变量:使得变量成为常量,不能修改值。
  • final修饰方法:阻止方法被子类重写,确保方法行为不变。
  • final修饰类:防止类被继承,确保类的实现不被修改。
  • final修饰参数:保证方法参数在方法体内不能被修改。

理解并掌握final关键字的使用对于编写高质量、可维护的Java代码至关重要。在实际开发中,合理使用final可以提升代码的稳定性和性能。

参考资料

  1. 《Java核心技术卷I》
  2. 《Effective Java(第3版)》
  3. Oracle官方Java文档
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【IT领域新生必看】解锁 `final` 关键字的秘密:Java 编程中的终极武器
在编程的世界里,关键字是语言设计者赋予开发者的强大工具,每个关键字都有其独特的用途和重要性。对于Java程序员来说,final 是一个极其重要且常用的关键字。它不仅有助于提高代码的安全性和稳定性,还能优化性能,帮助开发者编写更高效的代码。但是,final 关键字的用途和使用场景可能让初学者感到困惑。今天,我们将深入探讨Java中的 final 关键字,揭示它的真正威力,并展示如何在实际编程中巧妙地运用它。
E绵绵
2024/07/12
1840
Java中static、final关键字【详解】
静态成员变量(被static修饰,属于类、加载一次、内存中只有一份)。直接用 类名 访问即可,因为类只有一个,所以静态成员变量在内存区域中也只有一份,所有的对象都可以共享该变量。
寻求出路的程序媛
2024/03/25
7140
Java中static、final关键字【详解】
java基础4:深入理解final关键字
final class Fi { int a; final int b = 0; Integer s;
程序员黄小斜
2019/04/06
3270
【Java学习笔记之二十】final关键字在Java继承中的用法小结
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。 一、final关键字的基本用法 在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。 1、修饰类 当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。fi
Angel_Kitty
2018/04/09
8430
【Java学习笔记之二十】final关键字在Java继承中的用法小结
java关键字:fianl的一些简单的用法
引入的一个场景是: 有时候子类会去重写父类的方法方法,但是有时候不希望子类重写父类的方法 这个时候java 提供了一个关键字fianl来修饰 那么 子类中的方法不能重写被final修饰的方法 class Father{ public final void show(){ System.out.println(“不能修改hello java”); } }
全栈程序员站长
2022/06/29
2050
Java中的final关键字【详解】
被final关键字修饰的变量是常量,一旦赋值,不可被修改,而且必须在初始化对象的时候赋值;
訾博ZiBo
2025/01/06
880
java关键字final的使用
Java中的关键字final用于表示一个值或引用在程序执行过程中是不可变的。final可以用来修饰类、方法和变量,每种用法有不同的含义和作用。
玖叁叁
2023/05/11
2900
面试官:小伙子来说一说Java中final关键字,以及它和finally、finalize()有什么区别?
面试官:“小伙子,用过final关键字吗?” 我:“必须用过呀” 面试官:“好,那来说一说你对这个关键字的理解吧,再说一说它与finally、finalize()的区别” 我:“好嘞!”
JavaBuild
2024/05/27
1200
面试官:小伙子来说一说Java中final关键字,以及它和finally、finalize()有什么区别?
Java关键字(四)——final
  对于Java中的 final 关键字,我们首先可以从字面意思上去理解,百度翻译显示如下:
IT可乐
2018/07/24
3440
final关键字你真的会用?
codeReview的时候,看到各种final关键字的”骚“操作,今天认真复习一下final关键字。 我们都知道final关键字可以使用到类上,也可以使用道方法上,也可以使用到数据上,但是他的使用会为我们提供哪些好处呢?
袁新栋-jeff.yuan
2020/08/26
3740
final关键字你真的会了吗
final是java中的一个关键字,可以修饰变量(成员变量+局部变量)、方法以及类。
玖柒的小窝
2021/10/31
7870
Java中final和static关键字总结
final修饰的类不可被继承,例如java.lang.Math就是一个 final类,不可被继承。
lyb-geek
2018/07/26
5280
java final 的一些总结
C++ 也有final关键字,在C++11及以后的标准中引入了final,final关键字用于修饰类、成员函数和虚函数,表示它们是最终版本,不能被继承或重写。
潇洒
2023/10/20
1450
Java中final关键字(Java)
关键字概述 final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写 可以用来修饰:类,方法,变量 修饰类 final class 类名 {//类体} 被final修饰的类是最终类,没有后代,不能被继承 //最终类 public final class Person { ......... } 修饰变量 final int abc = 12; final int MAX_ABC = 120; 被final修饰的变量是称为常量,不能被修改 java中被final修
用户9006224
2022/12/21
6990
Java中final关键字(Java)
【JAVA】final关键字
在默认情况下,所有的成员变量和成员方法都可以被子类重写。如果父类的成员不希望被子类重写,可以在声明父类成员时使用final关键字修饰。final有“最终”“不可更改”的含义。在Java中,可以使用final关键字修饰类、属性、方法。在使用final关键字时需要注意: (1)使用final关键字修饰的类不能有子类。 (2)使用final关键字修饰的方法不能被子类重写。 (3)使用final关键字的变量是常量,常量不可修改。
颜颜yan_
2022/12/16
5070
【JAVA】final关键字
Java并发关键字-final
final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个final类型的类。即使能够知道final具体的使用方法,final在多线程中存在的重排序问题很容易忽略,希望能够一起做下探讨。
Java架构师必看
2021/07/14
7380
深入理解final关键字
通常我们对Java中final关键字的理解是“用final修饰的变量是不可变的”,如果尝试对final变量多次赋值,编译器将报错。似乎final的作用就是保证变量不可变,这没有错,但是如果我们在Java中灵活应用final的被修饰目标不可变的特性,往往能发掘出很多令人意想不到的效果,而非仅仅保证变量不可变这么粗浅而已。下面我们来说说final关键字的多重用法 一 用final修饰普通变量通常分为两种情况,修饰普通基本类变量和修饰引用类型变量,也就是对象类型变量。 修饰普通基本类型变量最能清楚直白的表现出fi
用户1608022
2018/04/11
7290
Java关键字final、static使用总结
一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 final不能用于修饰构造方法。
用户1112962
2018/07/03
8440
Java基础(十):关键字static、代码块、关键字final
Java微观世界
2025/01/21
1510
Java基础(十):关键字static、代码块、关键字final
final关键字修饰类、变量与方法【总结】
在 Java 编程的世界里,final 关键字就像一把神奇的 “锁”,一旦使用,就能赋予类、变量和方法独特的性质。今天,就让我们一同深入探究 final 关键字修饰类、变量和方法时的各种表现和用途,通过丰富的代码示例,感受它为我们的编程带来的便利与保障。
潜意识Java
2025/01/17
2290
final关键字修饰类、变量与方法【总结】
相关推荐
【IT领域新生必看】解锁 `final` 关键字的秘密:Java 编程中的终极武器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档