static用法一:
这大家应该都知道
1.修饰成员变量和方法
在类中,被static修饰的方法称作静态方法。同静态变量一样,静态方法可通过“类名.方法名”直接调用,而不需要创建对象调用。
2.静态代码块
随着类的加载而执行,而且只执行一次。执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。
执行顺序:静态代码块----->main方法----->非静态代码块-------->构造方法----->普通方法
3.静态内部类
所谓的静态内部类,自然就是用static修饰的内部类,那用static修饰过后的内部类,跟一般的内部类相比有什么特别的地方呢?首先,它是静态的,这就意味着它的创建不依赖于外部类,创建内部类的实例不需要像普通内部类一样先创建外部类实例才能创建。
其次,有优势必然有劣势,它不能像普通内部类一样无限制的访问外部类的方法和成员变量,只能访问静态成员变量和静态方法。
4.静态导包
静态导包就是java包的静态导入,用import static代替import静态导入包。
一般我们导入一个类都用 import com……ClassName;而静态导入是这样:import static com……ClassName.;这里的多了个static,还有就是类名ClassName后面多了个. ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用ClassName.方法名 的方式来调用。
好处:这种方法的好处就是可以简化一些操作,例如打印操作System.out.println(…);就可以将其写入一个静态方法print(…),在使用时直接print(…)就可以了。但是这种方法建议在有很多重复调用的时候使用,如果仅有一到两次调用,不如直接写来的方便
例如:
在静态导入之前:
public class Main{
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
}
}
在静态导入之后:
import static Java.lang.System.out;
import static java.lang.Integer.*;
public class Main{
public static void main(String[] args) {
out.println(MAX_VALUE);
}
}
它们的输出都一样:2147483647
下面是使用静态导入的几条原则:
使用方法import static
提防含糊不清的命名static成员。例如,如果你对Integer类和Long类执行了静态导入,引用MAX_VALUE将导致一个编译器错误,因为Integer和Long都有一个MAX_VALUE常量,并且Java不会知道你在引用哪个MAX_VALUE。
你可以在static对象引用、常量(记住,它们是static 或final)和static方法上进行静态导入