final关键字用于修饰变量、类、方法
变量
final修饰变量时,相当于定义一个常量。
这个好说,比如对于人来说,出生日期在出生那一刻就确定下来了,就相当于final变量只能进行一次赋值,以后都不能变化了。(当然,实际中可能不会这么做,还是会进行修改)
类似于C语言中的const关键字,但是final的作用范围更广,还可以作用于类和方法。
原理就是限制final修饰的变量值的更改,无论是基本数据类型还是引用数据类型,如下代码块的s是一个引用数据类型的变量,即使被赋值为null,后面也会报错。
final String s = null;
s = "Hello World"; //报错
类
作用于类,则这个类不能再被继承。
方法
作用于方法,则这个方法不能再被派生类重写。
没啥可说的,final英文意思为"最后的",不就是说到这儿就是终点了,咱也别变动了。
static关键字
public static
Java中没有全局变量的概念,因为Java是面向对象的语言,干啥都要先创建个对象,然后调用对象方法,但是可以用public static实现全局变量的效果:
package com.kingyu.flappybird.test;
import java.time.LocalDate;
class Person{
public static int age = 10;
private final LocalDate birthday = null;
}
public class testPerson {
public static void main(String[] args){
int age = Person.age;
double pi = Math.PI;
}
}
Person中的age被public static修饰、Math类中的PI被public static修饰,在写这些类时就相当于提供了一些全局变量。
private static
static被private修饰,这个变量就可以理解为类内共享的资源,防止被其他类修改