美文网首页
static关键字

static关键字

作者: Epimenides | 来源:发表于2020-08-07 11:06 被阅读0次

    static修饰变量相关概念

    1. static翻译为"静态"
    2. 所有static关键字修饰的都是类相关的,类级别的。
    3. 所有static修饰的,都是采用"类名."的方式访问。
    4. static修饰的变量:静态变量
    5. static修饰的方法:静态方法

    变量的分类:

    • 变量根据声名的位置进行划分:
      • 在方法体当中声明的变量叫做:局部变量。
      • 在方法体外声明的变量叫做 :成员变量。
    • 成员变量又可以分为:
      • 实例变量
      • 静态变量

    static静态代码块相关:

    1. 什么是静态代码块,语法是什么?
    static{
        java语句;
        java语句;
    }
    
    1. static静态代码块在什么时候执行呢?

      • 类加载时执行。并且只执行一次。
      • 静态代码块有这样的特点/特征。
    2. 注意:静态代码在类加载时执行,并且在main方法执行之前执行。

    3. 静态代码块一般是按照自上而下的顺序执行。

    4. 静态代码块有什么作用?

      • 静态代码块不常用 (不是每一个类中都要写的东西)。

      • 静态代码块这种语法机制实际上是SUN公司给我们java程序员的一个特殊的时刻/时机。

        这个时机叫做类加载的时机

      具体的业务:

      ​ 项目经理说了:所有我们编写的程序中,只要是类加载了,请记录一下类加载的日志信息(在哪年哪月那日几时积分几秒,哪个类加载到JVM当中了)。

    静态代码块的执行顺序

    • 栈:方法只要执行, 就会压栈。(局部变量)

    • 堆:new出来的对象都在堆中。垃圾回收起主要针对。(实例变量)

    • 方法区:类的信息,字节码的信息,代码片段。

      方法的代码片段放在方法区,但是方法执行过程中需要的内存在栈中。

    public class StaticTest{
        // 静态变量在什么时候初始化?类加载时初始化
        // 静态变量存储在哪里?方法区
        static int i = 100;
        
        // 静态代码块什么时候执行?类加载的时候执行。
        // 只要是静态的就可以放在方法区中
        static {
            // 这里可以访问i吗?
            System.out.println("i = " + i);
        }
        
        // 入口(main方法执行前实际上执行了很多代码)
        public static void main(String[] args){
            System.out.println("main begin!");
        }
    }
    

    相关文章

      网友评论

          本文标题:static关键字

          本文链接:https://www.haomeiwen.com/subject/qbcfdktx.html