世界杯门票_托马斯穆勒世界杯进球数 - noh16.com

世界杯门票_托马斯穆勒世界杯进球数 - noh16.com

shape
  • Home
  • 夏奇拉世界杯
  • Final可用在哪些位置? 分别表示什么作用?

Final可用在哪些位置? 分别表示什么作用?

  • 2025-11-15 05:43:59
  • admin

文章目录

前言一、final修饰类二、final修饰方法1.被final修饰的方法不可以被重写2.被final修饰的方法,JVM会尝试将其内联,以提高运行效率(早期java)

三、final修饰变量1.被final修饰的变量不可以被改变。如果修饰引用,那么表示引用不可变,引用指向的内容可变。2.被final修饰的常量,在编译阶段会存入常量池中。

总结

前言

速记

被final修饰的类不可以被继承被final修饰的方法不可以被重写被final修饰的变量不可以被改变。如果修饰引用,那么表示引用不可变,引用指向的内容可变。被final修饰的方法,JVM会尝试将其内联,以提高运行效率(早期java)被final修饰的常量,在编译阶段会存入常量池中。

一、final修饰类

当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。

在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类。 简单来说就是字面意思的最终类。

二、final修饰方法

1.被final修饰的方法不可以被重写

当然如果你用final修饰一个private方法,然后继承类后写一个一样的方法,会出现看似重写的情况,但这只是自欺欺人。因为这种方法下,你前面那个final方法本来就没有被继承,你只是重新写了一个一样的方法,

public class Test {

private final void say(){

System.out.println("说Test");

}

}

class Test_final_class extends Test{

public void say(){

System.out.println("说Test1");

}

}

2.被final修饰的方法,JVM会尝试将其内联,以提高运行效率(早期java)

下面这段话摘自《Java编程思想》第四版第143页: “使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。“

实际上这本书是2007年出版的了,因此它的最近java版本理论上应该都投入工程实践了。因此这个优化等于没说。

三、final修饰变量

1.被final修饰的变量不可以被改变。如果修饰引用,那么表示引用不可变,引用指向的内容可变。

对于一个final变量, 如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改; 如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,但是你可以修改其内的属性。

final int a = 100;

a = 101;//报错

final int[] list = new int[]{1};

list = new int[]{2};//报错

list[0] = 2;

因此理解一下: final修饰变量的本质是final修饰的变量会指向一块固定的内存, 这块内存中的值不能改变. 而引用对象是在这块内存里指向的是对象的引用,对象的相关属性在另外的内存放着。

2.被final修饰的常量,在编译阶段会存入常量池中。

public static void main(String[] args) {

int n1 = 2021; //普通变量

final int n2 = 2021; //final修饰的变量

String s = "2021CSDN";

String s1 = n1 + "CSDN"; //拼接字符串"2021CSDN"

String s2 = n2 + "CSDN";

System.out.println(s == s1); //false

System.out.println(s == s2); //true

}

拼接s2时,由于n2和“CSDN”都是常量,所以可以直接将“2021CSDN”返回给s2即可,不必等到运行时再拼接。 由于被final修饰的常量会在编译期进入常量池, 如果有涉及到该常量的操作, 很有可能在编译期就已经完成。

总结

final可以用于修饰类,方法,变量。 作用分别是:

被final修饰的类不可以被继承被final修饰的方法不可以被重写被final修饰的方法,JVM会尝试将其内联,以提高运行效率(早期java。被final修饰的变量不可以被改变。如果修饰引用,那么表示引用不可变,引用指向的内容可变被final修饰的常量,在编译阶段会存入常量池中。

<<<
Previous Post
盲订购车全攻略,这些细节你注意了吗?

Copyright © 2088 世界杯门票_托马斯穆勒世界杯进球数 - noh16.com All Rights Reserved.

友情链接