java基础------static关键字

一、static关键字

使用格式

static 数据类型 变量名;

static String name;

知识要点

1.可以被类名直接调用
2.被static修饰的变量(属性),全局共享

1.可以被类名直接调用

public class student {
    /*
    *可以被类名直接调用
    * */
    //声明静态成员变量
    static String name;

    public static void main(String[] args) {
        student.name="java";
        System.out.println("student.name:"+student.name);//输出 student.name:java
    }
}

2.被static修饰的变量(属性),全局共享

public class student1 {
    /*
    *
    * 被static修饰的变量(属性),全局共享
    * */
    //声明静态成员变量
    static String name;

    public static void main(String[] args) {
        //创建对象
        student1 student=new student1();
        student.name="java";
        System.out.println("student.name:"+student.name);//student.name:java

        student1 student1=new student1();
        //被static修饰的变量(属性),全局共享
        System.out.println("student1.name被static修饰的变量(属性),全局共享:"+student1.name);//student1.name:java

    }
}

二、静态方法

使用格式

访问修饰符 static 返回值 方法名称(){

}

public static void study(){
}

知识要点

1.可以被类名直接调用
2.静态方法只允许去访问静态方法,不允许去访问非静态成员(非对象条件下)

1.可以被类名直接调用

public class student2 {
    /*
     *静态方法可以被类名直接调用
     * */

    //静态方法
    public static void study(){
        System.out.println("我爱学习");
    }
    public static void main(String[] args) {

        student2.study();
    }
}

2.静态方法只允许去访问静态方法,不允许去访问非静态成员(非对象条件下)

public class student4 {
    /*
    * 静态方法只允许去访问静态方法,不允许去访问非静态成员(非对象条件下)
    * */
    //String name;
    static String name;

    public static void study(){
        System.out.println("我爱学习java");

    }
    public void studyer(){
        System.out.println("wo");

    }

    public static void main(String[] args) {
        //student4.name="java";不可以对其进行赋值
        student4.name="java";
        student4.study();//输出 我爱学习java
        student4 stu=new student4();
        stu.studyer(); //输出 wo
        //错误静态方法不允许去访问非静态方法,除非对象
    }
}

三、静态块

使用格式

static{
//执行语句
}

知识要点

随着类的加载而执行且只能执行一次

1.随着类的加载而执行且只能执行一次

public class student5 {

    /*
    * 随着类的加载而执行且只能执行一次
    * */
    //静态方法
    static{
        System.out.println("我是静态方法");
    }

    public static void main(String[] args) {
        student5 stu=new student5();//类执行第一次
        //输出 我是静态方法
        student5 stu1=new student5();//类执行第二次
        //没有输出
    }

}

四、 匿名块

{ }

//匿名块
    {
        System.out.println("我是匿名块");
    }

五、构造块(构造方法)

public 类名(){
}

六、比较静态块,匿名块,构造块的先后

public class student6 {
    //静态块
    static{
        System.out.println("我是静态块");
    }
    //匿名块
    {
        System.out.println("我是匿名块");
    }
    //构造块
    public student6(){
        System.out.println("我是构造块");
    }

    public static void main(String[] args) {
        student6 stu =new student6();
        /*输出顺序:

        *   我是静态块
            我是匿名块
            我是构造块
        *
        * */
    }
}

八、总结

  1. 静态属性可以被类名直接调用

  2. 被static修饰的变量(属性),全局共享

  3. 可以被类名直接调用

  4. 静态方法只允许去访问静态方法,不允许去访问非静态成员(非对象条件下)

  5. 静态块随着类的加载而执行且只能执行一次

  6. 按照先后顺序随着类的加载 静态块>匿名块>构造块

发布了62 篇原创文章 · 获赞 32 · 访问量 2720

猜你喜欢

转载自blog.csdn.net/weixin_45627031/article/details/105408844