static是学习java时最基础的关键字用法了,但好久没用了,都忘记了用法,mark下
1.特性
static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。
2.用法
1.静态方法
解释:在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
但是在非静态方法中,可以调用静态方法和静态变量。
public class Test {
public String name="xxx";
public static String hobby="play";
public static void test_static(){
System.out.println(hobby);
//静态方法中不能访问非静态变量
System.out.println(name);
}
}
2.静态变量
静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
3.静态类
如果一个类要被声明为static的,只有一种情况,就是静态内部类。
1.静态内部类跟静态方法一样,只能访问静态的成员变量和方法,不能访问非静态的方法和属性,但是普通内部类可以访问任意外部类的成员变量和方法
2.静态内部类可以声明普通成员变量和方法,而普通内部类不能声明static成员变量和方法。
3.静态内部类可以单独初始化
搜了一圈资料,说静态类一般是用来扩展方法,具体怎么扩展,还是要再看下
4.静态代码块
静态代码块可以放在代码中任何地方,可以优化性能,只会在类加载的时候执行一次
public class Test {
static{
System.out.println("test");
System.out.println("static");
}
}