Java—百科全书

JAVA——static修饰符解惑及使用

2019-07-05  本文已影响0人  BeaconCao

1. static的作用

2. 例子

public class StaticTest01 {

    public static void main(String[] args){

        Employee e = new Employee();
        //可以通过对象名.静态方法名的方式访问,工作中不这样使用
        System.out.println(e.company);
        //可以通过类名.静态方法名的方式访问,工作中使用这种写法
        System.out.println(Employee.company);
        e = null;
        System.out.println(e.company);//不会报空指针,说明静态变量跟对象无关。
    }

}

class Employee{

    private String name;

    static String company = "阿里巴巴";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


}
class StaticTest02{

    //成员变量
    int i;

    //成员方法
    //成员方法必须使用“引用.”调用
    public void m1(){
        System.out.println("m1方法");
    }

    //静态方法
    //可以使用“类名.”方式调用.也可以用“引用.”,即使用的是“引用.”,底层还是用的“类名.”
    //静态方法中不能直接访问非静态数据.
    //静态方法中不能使用this
    public static void m2(){
        //m1();错误,静态方法中不能访问非静态的方法
        //System.out.println(i);错误,静态方法中不能访问非静态的变量
        System.out.println("m2方法");
    }


    public static void main(String[] args){

        StaticTest02 st = new StaticTest02();
        st.m1();
        m2();


        st.m2();//不建议这样使用
        StaticTest02.m2();//建议这样使用            

        st = null;
        st.m2(); //不会报出空指针异常

    }

}
public class StaticTest03{

    //静态语句块
    static{
        System.out.println("静态语句块1");
    }

    static{
        System.out.println("静态语句块2");
    }

    static{
        System.out.println("静态语句块3");
    }

    //构造方法
    StaticTest03(){
        System.out.println("构造方法");
    }

    public static void main(String[] args){
        System.out.println("main main方法 1");
        System.out.println("main main方法 2");
        new StaticTest03();
        new StaticTest03();//静态语句块只执行了一次
    }

}

3. 问题

public class StaticTest04{
    static{

        System.out.println(i);
    }
    static int i = 100;
}
上一篇 下一篇

猜你喜欢

热点阅读