Java之static 关键字的使用

版权声明: https://blog.csdn.net/Newabcc/article/details/80427869

static 在Java中声明属性、方法时,可用来修饰。

常用方式:

*.static:main方法固定搭配(规定)

    public static void main(String[] args){}

1.static变量:按照是否静态的对类成员变量进行分类:一种是被static修饰的变量,叫静态变量(类变量);另一种是没有被static修饰的变量,叫实例变量

    区别:

    a、对于静态变量在内存中只会一次拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中优先加载完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。        b、对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

2. static代码块:static代码块是类加载时,初始化自动执行的,其优先级仅次于静态变量。如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。

3. static方法:static方法可以直接通过类名调用,任何的实例也都可以调用,因此static方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(也就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。tatic方法只能访问static的变量和方法,因为非static的变量和方法是需要创建一个对象实例才能访问的,而static的变量/方法不需要创建任何对象。

提示:

    static的数据或方法,属于整个类的而不是属于某个对象的,是不会和类的任何对象实例联系到一起。所以子类和父类之间可以存在同名的static方法名,这里不涉及重载。所以不能把任何方法体内的变量声明为static,例如:

void fun() {
    static int k = 0; //不允许!
 }
核心:static只有一个存储地方,使用时直接使用,不需要创建对象,

一般情况下类是没有static的,只有内部类可以加上static来表示嵌套类。

                                                                                      继续学习中...

猜你喜欢

转载自blog.csdn.net/Newabcc/article/details/80427869