final、static、static final 总结
1. final
final 主要用在3个地方:变量、方法、类。
-
final 用在变量上
① 这个变量必须在构造对象时就初始化。
③ 如果是基本数据类型的变量,那么这个变量的值一旦初始化之后就不能修改了,相当于是一个常量了。
④ 如果是引用类型的变量,则其初始化之后,就不能修改它的引用了,不过引用上的对象本身的值还是可以修改的。 -
final 用在方法上
① 表明这个方法不能被子类重写,防止子类修改它的含义。
② private 方***被隐式的指定为 final 。 -
final 用在类上
① 表明这个类不能被继承。
② final 类中的所有成员方法都会被隐式的指定为 final 方法。
2. static
static 主要用在 5 个地方:静态变量,静态方法,静态代码块,静态内部类,静态导包。(static 不能修饰外部类。)
-
静态变量
静态变量也称为类变量,整个类只有一个这样的变量,该类的所有实例都共享这一个静态变量,可以通过类名来直接访问静态变量(类名.静态变量名)。每个静态变量在内存中只存一份。对于非静态变量,每个对象实例都会有自己单独的一份,随着对象实例一起创建和销毁。 -
静态方法
① 静态方法是不在对象上执行的方法,比如 Math.pow(x, a); 这个调用不需要 Math 对象,或者说没有隐式参数。
② 静态方法在类加载的时候就存在了,不依附于任何对象实例,静态方法中只能访问静态变量和静态方法。 -
静态代码块
静态代码块只在类加载的时候执行一次。 静态代码块及非静态代码块的执行顺序可以看这个:静态代码块相关问题 -
静态内部类
① 静态内部类的创建不依赖于外部类。也就是说,创建普通内部类之前需要先创建外部类,而创建静态内部类之前不需要先创建外部类,可以直接创建静态内部类。
② 静态内部类可以调用外部类的静态变量和非静态方法,但是不能调用外部类的非静态变量和非静态方法。 -
静态导包
import static com.xxx.ClassName.xxx
静态导包可以简化静态方法和静态变量的使用,简化代码。
比如静态导包前:
写输出语句:System.out.println(…);
当我们先静态导包后:
import static java.lang.System.out;
写输出语句语句:out.println(…);
3. static final
static final 用在变量和方法上。
-
static final 用在变量上
相当于与是一个“全局常量”,一旦初始化之后,就不能修改了,并且可以通过类名访问,而且整个类共享一个。 -
static final 用在方法上
表明这个方法不能被子类继承修改,并且可以直接通过类名来调用这个方法。 -
static final 与 final static 是一样的。
上面就是关于关于 final、static、static final 的相关总结内容了,如果看完之后,还有相关问题的不知道,可以在评论区留下问题,会及时回答更新。
这里是猿兄,为你分享程序员的世界。
非常感谢各位优秀的程序员们能看到这里,如果觉得文章还不错的话,
求点赞👍 求关注💗 求分享👬
对我来说真的 非常有用!!!
注: 如果猿兄这篇博客有任何错误和建议,欢迎大家留言!