-> static
用于修饰变量:随着类加载时完成初始化,内存中只会存在一个(JVM只会为其分配一次内存,所有类都将共享该静态变量)。
用于修饰方法:在类加载时就存在,static修饰的方法,直接用类名调用,不依赖任何实例(static的方法不能用abstract修饰,但是可以用final修饰[1])。
用于修饰代码块:在类加载完就会马上执行代码块中的内容(使用场景之一某些工厂模式下用到)。
-> final
用于修饰变量:
编译时常量:类加载时完成初始化,编译后代入到任何计算式中(只能基本类型)。
运行时常量:基本数据类型或引用数据类型(引用不可变,引用对象内容可变)。
用于修饰方法:不能被继承。
用于修饰类:不能被继承。
用于修饰形参:final形参不可变
-> 补充:使用final的好处
- final 关键字提高了性能。JVM 和 Java 应用都会缓存 final 变量。
- final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
- 使用final 关键字,JVM 会对方法、变量及类进行优化。
注:
【1】
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117895.html