stactic关键字的作用

1.static是什么?
static作为java中的修饰符,可修饰成员属性,成员方法,内部类,代码块。
2.static有什么用?
java是面向对象的语言,说白了就是我们只关心对象,而不去关心它内部具体是如何实现的。我们通常使用 对象. 来获取这个对象所具有的一些属性或者方法,但是前提是我们必须有对象(扎心了)。那么如果没有对象怎么去调用这些呢,这就是static的作用。
static可以让我们没有创建对象的情况下来进行调用。
也就是说static修饰的东西不依赖于对象,根据类名就可以去访问。

修饰成员属性

stactic关键字的作用错误的定义方式:
stactic关键字的作用对于static修饰的属性来说,它不能被定义在某个方法中,代码块中。就是刚才提到的,被static修饰的依赖于类,是类的一个特性。被static修饰的变量也称为静态变量,静态变量和非静态变量的区别是,非静态变量是依赖于对象的,也就是说所有对象都有属于自己的一份,而静态变量是所有对象共享的一份。而且从初始化顺序上来说,静态变量在类加载时被初始化,非静态变量在对象被创建的时候进行初始化。如果是多个静态变量,则按照定义的顺序进行初始化。

修饰成员方法

stactic关键字的作用
stactic关键字的作用

从示例中就能看到,static修饰的方法不能调用非静态方法和非静态变量。但是非静态方法可以调用静态方法和静态属性。另外静态方法中不能使用this、super关键字,很容易理解。我静态方法都不依赖对象了,你还跟我扯什么this、super???
stactic关键字的作用一个类中的static静态变量,既可以通过类名去访问,也可以通过对象去访问(只是有警告罢了)

修饰内部类

stactic关键字的作用

修饰内部类其实是static是一种比较特殊的用法,普通类是不能被修饰为静态的,只有内部类才可以。可以通过 外部类.静态内部类 的方式去创建一个静态内部类的对象,如果没有static修饰这个内部类,那么只能通过new一个主类,然后再通过外部类的对象去new一个内部类对象。可以通过这个对象去调用静态内部类中的方法。

修饰代码块

stactic关键字的作用

stactic关键字的作用
static修饰代码块能够优化程序性能,static代码块可以放在类中的任何地方,一个类可以有多个static代码块,只有在类加载时被执行一次。

总结

1.static的本质就是让被修饰的,在类加载时执行,也就时优先于对象存在,不管new不new对象,我都先加载static部分,所有对象一份(静态变量在方法区),非静态的存储在堆上的对象中。
2.被static修饰的生命周期:
伴随类的加载而被加载,伴随类的消失而消失。
3.静态不能调用非静态,非静态可以调用静态。
(其实就是静态的先产生非静态的后产生)