Java中的static和final关键字的使用详解
一. static
1.static静态变量
对于类中的变量,如果声明为static型:

其特点是:此变量会被这个类的所有对象所共享,这些对象都可以调用、改变它的值。
2.static静态类方法
当方法名前有static,即为static方法,可以方便我们无需创建对象也可以调用此方法。
采用:
类名.method();//来调用即可
特点:静态方法比较拉,只可以访问 静态的 属性/变量/方法,无法访问非静态的这些属性/变量/方法

相对的,非静态方法啥都能访问(静态和非静态的属性/变量/方法,都可以。
二. final
1.final的作用
final类不可被继承,final方法不可被重写(但可以被继承),final属性不可被外部更改。
(很好理解,final就是最终的意思嘛)
2.final型变量
必须!初始化

也很好理解,final变量没法更改值,要是一开始不定义好,那不就没办法获得值了。
三. final与static一起使用
我们知道,static代码块在加载类的时候就会启动,而构造器要在创建类的对象才会启动。
所以如果当final类型是static类型的变量时,只能在 定义中 或者 静态代码块中 初始化。
因为如果是在构造器中初始化,可能出现的情况是,虽然加载类的时候有了final变量,但是没有创建对象,那么就没有初始化final变量,这是不可以的。
另外:
class BBB{
public final static int sbb = 250;
static {
System.out.println("static method has been activated!");//不会输出这一行
}
}若直接调用:
BBB.sbb;
当直接调用sbb这个final static类,不会导致类的加载,所以不会输出static代码块的内容。
到此这篇关于Java中的static和final关键字的使用详解的文章就介绍到这了,更多相关static和final关键字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot+WebSocket实现即时通讯的方法详解
这篇文章主要为大家详细介绍了如何利用SpringBoot+WebSocket实现即时通讯功能,文中示例代码讲解详细,对我们学习或工作有一定参考价值,需要的可以参考一下2022-05-05
为什么Spring和IDEA都不推荐使用 @Autowired 注解
本文主要介绍了为什么Spring和IDEA都不推荐使用 @Autowired 注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-04-04
SpringBoot采用Dynamic-Datasource方式实现多JDBC数据源
在某些情况下,如果我们需要配置多个数据源,本文主要介绍了SpringBoot采用Dynamic-Datasource方式实现多JDBC数据源,具有一定的参考价值,感兴趣的可以了解一下2023-10-10
基于@AllArgsConstructor与@Value共用的问题解决
这篇文章主要介绍了基于@AllArgsConstructor与@Value共用的问题解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-09-09


最新评论