static关键字的一些使用

## 百度百科定义static关键字

通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。

总的来说,用static声明的静态变量就是一种独立于类的对象的方法或属性

在B站上听了狂神老师的课程,我了解到了static的一些重要特性,在这里进行一些归纳总结:

1.static声明的方法和属性是可以直接用类名调用,而不需要对象调用的

譬如,在类A中:

class A{
    public static int num1;
    public int num2;
}

此时想在主类里面调用num1,num2则:

public class B{
    public static void main(String[] args){
        A a = new A();
        System.out.println(A.num1);//此处可以用a.num1也可
        System.out.println(a.num2);//此处只能用对象a调用
    }
}

静态方法与之同理

2.针对代码块而言,static代码块 先于 非静态代码块 先于 构造方法

image-20220114224729416

如图所示,在创建对象时,执行构造方法之前会先执行代码块内的内容,而static先于非静态的,再次说明static声明的内容是和类一起初始化的,而不是对象

注:static声明的内容只执行一次,无论创建多少次对象都只执行一次

也就是说,还是上面的例子,如果:

A a = new A();
A b = new A();
A c = new A();

static的代码块的内容还是只执行一次

3.静态导入包的使用

在对其他的工具包进行导入时,可以添加static关键字,例如:

import static java.lang.System.out;

在你想要进行System.out.println("")输出时,可以写作:

out.println("");

我的理解是,通过导入System包的out变量,并用static来修饰这一个out变量,使之在该java文件中的out变成一个静态变量,就可以像调用类中static修饰的变量一样,直接调用out。

这是我的static关键字学习过程中的收获,如果大家有不同的想法欢迎讨论。

posted @ 2022-01-14 23:14  可乐加品客  阅读(158)  评论(0编辑  收藏  举报