Java static keyword
Java中static关键字主要用于内存管理(是的,你没听错)。我们可以将它应用到变量、方法、代码块、嵌套类以及导入包中。静态关键字属于类,而不是类的实例。
1.静态变量
- 静态变量可以被视为所有对象通用的属性,例如员工的公司名,学生的学校名
- 静态变量只在类加载时在方法区(class area)中获取内存
优点:节省内存
2.静态方法
- 静态方法属于类而不是类的对象
- 静态方法可以被调用在没有类的实例的情况下,言外之意,静态方法可以通过类调用,自然也可以通过类对象调用
- 静态方法可以访问静态数据成员并更改他们的值
限制:主要有两个限制
- 静态方法不能使用非静态数据成员或直接调用非静态方法
- 在静态上下文中不能使用this或super关键字,因为他们就没有隐式接受this参数
Q&A:为什么Java的main方法是静态的?
因为调用一个静态方法不需要一个对象。如果main方法是一个非静态方法,那JVM需要先创建一个对象然后才调用main方法,这将导致额外的内存分配
3.静态代码块
- 静态代码块被用于初始化静态数据成员
- 静态代码块在加载main方法之前被执行,可以对比instance initalizer block的执行时间
Q&A:我们能执行一个没有main方法的程序吗?
不行。在JDK1.6以前唯一的方式是使用静态代码块,但是自从JDK1.7,他不可能被执行在没有main方法的时候
4.静态内部类
- 静态内部类可以使用外部类的静态数据成员和方法,但不能使用非静态数据成员和方法。不同于非静态内部类,可以使用外部类的所有数据成员和方法
- 静态内部类常用于build模式
5.静态导包
- 可以少写包的前缀,让代码更优美
- 不建议使用
原文链接:https://www.javatpoint.com/static-keyword-in-java