Java 静态修饰符 static 特性详解

/ JavaSE / 180浏览

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方法.