• static修饰符的作用


    1.Static用来修饰 一个方法又或者一个成员变量,那么静态方法和普通方法,静态变量和成员变量之间又有什么区别呢?

     静态方法和普通方法调用方式的不同

       如果是两个静态方法,可以直接调用

       如果是两个普通方法,可以直接调用

       普通方法可以调用静态方法

       静态方法却只能访问静态成员

       普通方法 可以 对象.方法

       静态方法 则是 类.方法

      

      为什么被staic修饰的方法只能访问静态成员?

      因为静态方法在类加载的时候就随着一起加载了,此时其他成员和方法并没有初始化,换个理解 static 属于类,而普通成员和方法属于对象,对象不一定相同,因此static方法里不能用 super和this

      静态变量和成员变量的区别

      生命周期

          静态变量随类的加载而加载,随类的销毁而销毁

          成员变量随对象的加载而加载,随对象的销毁而销毁

      调用方式不同

          一个是类调用,一个是对象调用

      存储的位置不同

          静态变量存储在静态区,而成员变量保存在堆里

    2.Static还可以修饰代码块

      static{

       代码..

      }

      静态代码块随类的加载而加载,而且类存在期间只加载一次

    3.Static用来修饰内部类

      

      Static 修饰的内部了不需要先实例一个外部类,可以直接使用外部类.内部类

    4.Static可以用来静态导包

      import static XXX.XXX.XXX.静态方法名  表示导入某个静态方法

      或者import static import static XXX.XXX.XXX.* 表示导入当前类的静态方法

      好处就是可以直接使用方法名,而不需要类.方法

     ----------------------------------------补充----------------------------------------------------------

    关于static修饰符修饰的 方法 内部类 成员变量 代码块的加载顺序

      一定是按顺序加载,先加载父类,在加载子类

    public abstract class Animal {
        static{
            System.out.println("父类的静态代码块");
        }
        
    }
    public class Test extends Animal{
        private static int s = run();
        static{
            System.out.println("子类的静态代码块");
        }
        static class A{
            static {
                System.out.println("子类的静态内部类的静态代码块");
            }
        }
    
         void sleep(){
             System.out.println("子类重写父类的方法");
         }
         static void eat(){
            System.out.println("静态的吃");
         }
         static int run(){
            System.out.println("静态的跑");
            eat();
            return 0;
         }
        public static void main(String[] args){
            new A();
        }
    }

    执行结果

    按顺序加载,先加载父类,在加载子类

      

  • 相关阅读:
    关于链表的一个小程序
    位操作
    结构和其他数据形式
    存储类、链接、内存管理
    文件输入/输出
    为什么返回IEnumerbale而不是List
    EncType
    script标签不能闭合
    jqueryUI AutoCompelete
    ChangeType
  • 原文地址:https://www.cnblogs.com/fjd-1004/p/11012879.html
Copyright © 2020-2023  润新知