1.static属性,方法
类内属性或方法用static修饰,表示该属性或方法属于类,不依赖于实例对象,所以不需要用对象调用,而是直接用类名调用。
static方法只能调用其他static方法,而普通方法可以调用其他的普通方法和static方法。
2.静态代码块
class Animal{
    {
        //1.匿名代码块  可用于给属性赋初值
    }
    static{
        //2.静态代码块
    }
    public Animal(){
        //3.构造方法
    }
    public static void main(String[] agrs){
        Animal a = new Animal();
        Animal a2 = new Animal();
    }
}如上图的代码,当new一个新对象a时,执行顺序为2-->1-->3,
当继续new一个新对象时,执行顺序为1-->3,
这表示静态代码块只在第一次new这个类的对象时执行。
3.静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;同文件的程序就可以直接调用random()了,而不用写Math.random()。PI也是同理,直接使用。
4.final
通过final修饰的类不能被继承,没有子类。
public final class Animal{
}
public class Rabbit extends Animal{ //会报错final修饰的成员变量必须在所在的类的对象创建之前被初始化,且一旦初始化就不能被修改
下列代码为final成员变量初始化的三种方式:
public class Animal{
    final int ear = 2;
    
    final int leg;
    {
        leg = 4;
    }
    final int eyes;
    public Animal(){
        eyes = 2;
    }
}final修饰的局部变量必须在使用前赋值,且不能再修改。
public void func(){
    final int number = 8;
}当fina修饰基本类型的变量,则变量一旦被赋值,就不能修改,因为final修饰的变量是自定义常量
当final修饰的引用类型的变量,则该变量的值不能改变(也就是该变量不能指向别的对象,存放的地址不能改),但是指向的对象的内容可以被修改。
final int a = 10; //a不能被修改
final Animal r = new Animal();// r的值不能修改,但r指向的对象的内容可以修改
r.ear = 5;//修改对象的属性当final修饰成员方法,该方法不能被重写,但是可以被继承
final 总结

Reference:
java final 关键字_小鸡费斯特的博客-CSDN博客



















