`
wing123
  • 浏览: 796663 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中final的用法总结

阅读更多

1.         修饰基础数据成员的final

这是final的主要用途,其含义相当于C/C++const,即该成员被修饰为常量,意味着不可修改。如java.lang.Math类中的PIEfinal成员,其值为3.141592653589793

2.718281828459045

2.         修饰类或对象的引用的final

Java中,我们无法让对象被修饰为final,而只能修饰对象的引用,这意味着即使你写public final A a = new A(); 事实上a指向的对象的数据依然可以被修改,不能修改的是a本身的引用值,即你不能再对a进行重赋值。同样的情况出现在数组中,比如public final int[] a = {1, 2, 3, 4, 5},事实上a中的数值是可修改的,即可以写a[0] = 3。据目前了解,java中数组内的数据是无法修饰为不可修改的,而C/C++可以。

3.         修饰方法的final

修饰方法的finalC/C++中修饰成员对象的const大不相同。首先,修饰方法的final含义不是“不可修改”,而是指该方法不可被继承成员重新定义。(注意,这里所说的不能被重新定义,并不是指子类一定不能定义同名方法,如果父类的方法是私有类型,子类是允许定义该方法的,这里指的不能重新定义是指不能通过改写方法来使得方法重写的多态性得以实现,如不希望A a = new B(); a.f();这样的重写方法情况出现)

示例:

public class A {

    // final方法f

    public final void f() {

       System.out.println("A中的final方法f被调用了");

    }

}

public class B extends A {

    // 编译错误!父类的f方法是final类型,不可重写!

    //! public void f() {

    //!     System.out.println("B中的方法f被调用了");

    //! }

}

此外,当一个方法被修饰为final方法时,意味着编译器可能将该方法用内联(inline)方式载入,所谓内联方式,是指编译器不用像平常调用函数那样的方式来调用方法,而是直接将方法内的代码通过一定的修改后copy到原代码中。这样可以让代码执行的更快(因为省略了调用函数的开销),比如在int[] arr = new int[3]调用arr.length()等。

另一方面,私有方法也被编译器隐式修饰为final,这意味着private final void f()private void f()并无区别。

4.         修饰类的final

当一个类被修饰为final时,它的含义很明确,就是不允许该类被继承,也就是说,该类“绝后”了,任何继承它的操作都会以编译错误告终。这也凸显出Javafinal而不用const作为标识符的理由。

       示例:

       public final class A {

}

// 编译错误!Afinal类型,不可被继承!

//!public class B extends A{

//!}

分享到:
评论

相关推荐

    java中final和static的总结

    在Java编程语言中,`final` 和 `static` 是两个非常重要的关键字,它们分别具有不同的含义和用法,但都对代码的结构和行为产生深远影响。本文将深入探讨这两个关键字,并结合实际示例来解释它们的应用场景。 首先,...

    Java中final的深度剖析

    总结来说,final关键字在Java编程中扮演了多种角色,从确保常量的不变性,到防止方法重写,再到优化性能,它都发挥着至关重要的作用。合理利用final可以提高代码质量,减少逻辑错误,增强代码的可预测性和可维护性。

    java中final关键字和static关键字详细用法

    Java中的`final`和`static`关键字是编程中非常重要的两个修饰符,它们分别用于不同的场景,以确保代码的稳定性和高效性。 首先,`final`关键字主要用于表示不可变性。它可以用来修饰类、方法和变量。对于类,如果一...

    java中final和static的区别

    final 关键字在 Java 中有多种用法,包括修饰变量、方法、类等。下面是 final 关键字的各种用法: 1. final 修饰变量:表示该变量一旦被初始化,程序无法修改变量的值,该变量变成了一个常量。注意,系统不会默认为...

    Java关键字final、static使用总结

    在 Java 编程语言中,final 和 static 是两个非常重要的关键字,它们可以用来修饰类、方法、变量等,了解它们的使用方法和限制非常重要。本文将详细总结 final 和 static 的使用方法和限制。 一、final 关键字 ...

    java中final与static的用法

    `final`关键字在Java中有多种用途,它可以用来修饰类、方法和变量,其主要目的是确保被修饰的对象具有不可变性或只读性。 #### 1. `final`修饰变量 当`final`用于修饰一个变量时,该变量成为常量,一旦赋值后就不...

    Java中的final关键字

    在Java编程语言中,`final`关键字扮演着一个至关重要的角色,它被用来定义不可变性和唯一性。这个关键字可以应用于变量、方法和类,分别赋予它们不同的特性。以下是对`final`关键字在不同场景下使用的详细介绍: 1....

    final类的适应实例

    Java中final类的简单使用,并对Java关键字的使用做出了总结

    Java中final的用法.doc

    总结来说,`final`关键字在Java中扮演了多种角色,包括创建不可变变量、常量、对象和数组,确保方法和类的不可覆盖性,以及在多线程环境中的安全性。正确使用`final`能够提高代码的清晰度、稳定性和性能。

    举例讲解Java中final关键字的用法

    Java中的`final`关键字是一个...总结来说,`final`关键字在Java中扮演着确保数据不变性和控制继承的角色,帮助开发者维护代码的稳定性和安全性。理解并恰当使用`final`关键字对于编写健壮、高效的Java代码至关重要。

    深入理解Java中的final关键字_动力节点Java学院整理

    Java 中的 `final` 关键字是一个至关重要的概念,它被用来声明类、方法和变量,以确保它们在程序执行过程中不可更改。深入理解 `final` 关键字可以帮助开发者写出更加安全、高效的代码。 首先,`final` 关键字可以...

    Java中static、this、super、final用法

    在Java编程语言中,`static`, `this`, `super`, 和 `final` 是四个非常重要的关键字,它们分别代表不同的概念并具有特殊的用法。 一、`static` `static` 关键字用于声明类级别的成员(变量或方法),这意味着它们...

    Java中final关键字的用法总结

    总结来说,final关键字在Java中起到了关键的作用,它确保了代码的稳定性和安全性,同时也为优化提供了便利。正确使用final可以提高代码质量,降低出错的可能性,并帮助开发者设计更可靠的系统。

    Java中final共2页.pdf.zip

    总结来说,`final`关键字在Java中扮演着多种角色:确保变量的不可变性、阻止类的继承以及防止方法的重写。理解并熟练运用`final`,可以帮助开发者编写更安全、更易于维护的代码。在实际编程中,合理利用`final`可以...

    java中final类型等的应用

    - **示例**:在Java中,可以使用`getBytes(String charsetName)`方法将字符串编码为指定字符集的字节数组;使用`new String(byte[] bytes, String charsetName)`方法将字节数组解码为字符串。 #### 2.2 字节序标记...

    详解Java中final的用法

    总结来说,`final`关键字在Java中的应用主要有以下几个好处: 1. 提高程序安全性:通过限制类的继承和方法的覆盖,可以防止意外的改动,保证代码的稳定性。 2. 提升代码可维护性:使用`final`常量可以避免在代码中多...

    Java final关键字

    在Java编程语言中,`final`关键字扮演着一个至关重要的角色,它被用来声明一个变量、方法或类为不可变的。在这个学习demo中,我们将深入理解`final`关键字的各种用法及其背后的原理。 首先,`final`关键字用于变量...

Global site tag (gtag.js) - Google Analytics