Static关键字的用法

作者: gavin 分类: Java,Java 基础 发布时间: 2020-11-03 16:00

static是java中非常重要的一个关键字,而且它的用法也很丰富,主要有四种用法:

  1. 用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享;
  2. 用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类;
  3. 静态块用法,将多个类成员放在一起初始化,使得程序更加规整,其中理解对象的初始化过程非常关键;
  4. 静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”即可调用类方法,更加方便。

一、修饰成员变量

package com.example.study.pro1;

/**
 * Static关键词的使用
 * 场景一 修饰成员变量
 * 通过static定义的 count,其值统一存储在类里
 */

public class Static1 {
    private static int count = 0;
    int id;
    String name;
    int age;

    public Static1(){//【构造器】与类同名就会自动调取,用于给变量赋值
        id = ++count;

    }

    public String toString(){//【】当有toString时自动执行该方法
        return "Id:" + id + ",Name:" + name + ",Age:" + age + ",Count:" + count;
    }

    public static void main(String[] args){
        Static1 p1 = new Static1();
        p1.name = "zhangsan";
        p1.age = 10;

        Static1 p2 = new Static1();
        p2.name = "lisi";
        p2.age = 20;
        System.out.println(p1.toString());
        System.out.println(p2);

    }
}

二、修饰成员方法

package com.example.study.pro1;

/**
 * Static成员方法的使用
 * 场景二 修饰成员方法
 * 通过static定义的 print,可以直接调用,不需要new
 */

public class Static2 {

    public static void print(Object o){
        System.out.println(o);
    }

    public void print2(Object o){
        System.out.println(o);
    }

    public static void main(String[] args){

        Static2.print("Hello world!");  //使用了static定义的方法,可以直接调用,不需要去new

        Static2 s2 = new Static2();   //未使用static定义的方法,需要new一下才能调用成功
        s2.print2("Hello world!");
    }

}

三、静态块用法

package com.example.study.pro1;

/**
 * Static成员方法的使用
 * 场景三 修饰成员方法
 * 通过static实例化对象,都会被优先执行
 */
public class Static3 {
    Book book1 = new Book("book1 成员变量初始化");
    static Book book2 = new Book("static成员book2成员变量初始化");

    public Static3(String msg){
        System.out.println(msg);
    }

    Book book3 = new Book("book3成员变量初始化");
    static Book book4 = new Book("static成员book4成员变量初始化");

    public static void main(String[] args) {
        Static3 p1 = new Static3("p1初始化");
    }
}

class Book{
    public Book(String msg){
        System.out.println(msg);
    }
}
/**Output
 * static成员book2成员变量初始化
 * static成员book4成员变量初始化
 * book1成员变量初始化
 * book3成员变量初始化
 * p1初始化
 **/

四、静态导包

package com.example.study.pro1;
import static com.example.study.pro1.Static4_1.*;
/**
 * Static成员方法的使用
 * 场景四 静态包导入
 * 通过static导入包后,可以直接调用包里的方法
 */
public class Static4 {

        public static void main( String[] args )
        {
            print("Hello World!");
        }
        /**Output
         * Hello World!
         */
}
package com.example.study.pro1;

public class Static4_1 {
    public static void print(Object o){
        System.out.println(o);
    }
}

参考:https://www.cnblogs.com/dotgua/p/6354151.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注