static作为java的关键字,主要有以下5点用处
静态变量
静态变量和非静态变量的区别在于,静态变量在类初次加载的时候初始化,而非静态变量在类实例化的时候初期化
典型用法:定义常数
静态方法
静态方法和非静态方法与静态变量和非静态变量的区别类似,静态方法为class所有,可以直接通过class.method的方式调用,而非静态方法为对象所拥有,需要先实例化类得到一个对象后,通过object.method进行调用
典型用法:各种utils
静态代码块
类加载时直接执行,先于main方法,常用于初始化
典型用法:单例模式
内部静态类
外部需要通过ParentClass.ChildClass的方式调用,ParentClass的静态代码可以通过ChildClass的方式直接调用
典型用法:HashMap
静态导包
使指定类的静态方法或者静态变量对本类可见
典型用法:就它自己,静态导包
下面是一个包含所有用法的例子,如果你看懂了,66666666666666
package architecture;
/**
* 静态导入
*/
import static java.lang.System.out;
public class TestClass {
/**
* 静态变量
*/
public static final String BLOG = "soaringroad";
static {
out.println(BLOG + ":静态代码块 start");
new TestStaticClass();
out.println(BLOG + ":静态代码块 end");
}
/**
* 静态方法
*
* @param args
*/
public static void staticMethod() {
out.println(BLOG + ":静态方法");
}
/**
* 静态内部类
*/
private static class TestStaticClass {
public TestStaticClass() {
out.println(BLOG + ":内部静态类 start");
staticMethod();
out.println(BLOG + ":内部静态类 end");
}
}
}