<十一>Java中final和static的区别

static:静态方法、静态变量、静态块

静态方法:只有调用的时候才会去执行,否则不去执行

如果一个类还没有被加载的时候:

①会先去加载父类静态变量和静态代码块(与位置有关)

②然后加载该类静态变量和静态代码块

③之后再去加载父类实例变量的初始化

④执行父类构造函数

⑤然后加载该类实例变量的初始化

⑥最后执行该类构造函数

final:

①final加到类上,类不能被继承

②final加到方法上,方法不能被重写

③final加载成员变量或局部变量上,这个变量不能被修改

④final还可以加到方法的参数上,比如加到内部类的参数上时,就必须使用final关键字进行修饰(jdk1.8之后可不加final)。因为内部类会持有外部类引用和方法参数中的引用,反编译class文件后,内部类的class文件的构造函数参数中会显示传入的外部类对象(必然会加)以及方法内局部变量和形参(如果内部类有调用会加),不管是基本数据类型还是引用变量,如果重新赋值了,会导致内外指向对象不一致,所以java就暴力规定使用final,不能重新赋值

你可能感兴趣的:(Java,java,开发语言,后端)