Java 中的 final 关键字真的能防止一切修改吗?

final 是 Java 关键字,用于防止修改,但并非所有情况都能阻止更改。

1 修饰变量:值不能变(基本类型),对象引用不能变(但对象内容可以变)。

final int a = 10; // 不能修改 a 的值  
final List<String> list = new ArrayList<>();
list.add("Hello"); // 可以修改 list 的内容

2 修饰方法:防止子类重写。
3 修饰类:防止被继承,例如 String 类。

所以,final 只防止引用变更,不阻止对象内部状态修改!

相关文章

你总用的 Java Volatile 关键字,真的理解透了吗?

作为互联网大厂的后端开发人员,在多线程编程的 “战场” 上,你是否遭遇过这样的 “诡异事件”?明明已经对共享变量进行了修改,可其他线程却像被施了 “障眼法”,读取到的依旧是旧值;又或者程序运行时突然冒...

Java中final关键字的多样魅力

Java中final关键字的多样魅力在Java编程的世界里,final关键字就像是一位低调却实力非凡的角色。它不是那种让人一眼就惊艳的存在,但只要你深入接触,就会发现它在不同场景下展现出来的独特魅力。...

吊打面试官(五)--Java关键字volatile一文全掌握

前言 volatile 是 Java 中的一个关键字,用于声明变量。当一个变量被声明为 volatile时,它可以确保线程对这个变量的读写都是直接从主内存中进行的。这也是面试官最爱问的点,接下来我们详...

吊打面试官(七)--Java语言static关键字一文全掌握

导读static关键字在Java中用于创建类级别的成员,这些成员不属于类的任何特定实例,而是属于整个类。static可以用于修饰变量、方法、代码块和内部类。本文从基础使用,使用问题,使用场景,底层原理...

Java并发编程中的volatile关键字深度解读

Java并发编程中的volatile关键字深度解读提到Java中的关键字volatile,我们常常会联想到它与线程安全的紧密关系。作为一个经常出现在面试题中的"明星"关键字,volat...

吊打面试官(六)--Java语言final关键字一文全掌握

导读final关键字在Java中有多种用途,可以用于修饰类、方法和变量。本文从常规使用场景、常见的误解、底层原理、jdk源码案例,常见使用场景等几方面全面剖析关键字的各个方面内容。帮助大家理解并使用该...