static修饰符可用于修饰:
- 属性
- 方法
- 代码块
- 内部类
可以把static理解为Java语言的静态资源修饰符,被修饰了的内容,不需要实例化对象就可以调用;但是静态内容也调用不了非静态资源(属性、方法等)。
static修饰属性
那么这个属性就可以使用“类名.属性名”来访问。
static修饰的属性,是在类加载时被创建并初始化,类加载只进行一次,所以累变量也只会被创建一次。
用例代码:
package cn.zealon.modifier.statics;
/**
* static修饰属性
* <p>被static修饰的属性,可以用"类名.方法名"来访问</p>
* @Author: zealon
* @Version: 1.0
*/
public class UseStatic1 {
static String sayHi = "Hello,World!";
public static void main(String[] args){
System.out.println(sayHi);
}
}
static修饰方法
那么这个方法就可以使用“类名.方法名”来访问。static修饰的方法,不能直接访问本类中的非静态成员,但是非静态成员可以访问静态成员。
在静态方法中不能出现this关键字。
java中main方法必须写为static的原因就是:在类加载时无法创建对象,而静态方法可以不通过对象调用,所以在类加载时就可以通过main方法入口来运行程序。
用例代码:
package cn.zealon.modifier.statics;
/**
* static修饰方法(即静态方法)
* <p>被static修饰的属性,可以用"类名.方法名"来访问</p>
* @Author: zealon
* @Version: 1.0
*/
public class UseStatic2 {
static void say(String words){
System.out.println("say:"+words);
}
public static void main(String[] args){
say("Hello,World!");
}
}
static修饰代码块
代码块叫做静态代码块,在类加载时被执行一次。代码块会最先执行。可以用静态初始化代码块初始化一个类。
用例代码:
package cn.zealon.modifier.statics;
/**
* static修饰代码块
* @Author: zealon
* @Version: 1.0
*/
public class UseStatic3 {
static {
System.out.println("执行static代码块.");
}
public static void main(String[] args){
System.out.println("执行mian方法.");
}
}
由于代码块会优先执行,所以运行结果为:
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/java ...
执行static代码块.
执行mian方法.
作者: Zealon
崇尚简单,一切简单自然的事物都是美好的。