《Java架构筑基》从Java基础讲起——深入理解Static

发布时间:2020-06-26 10:05:47 作者:未来可期_
来源:网络 阅读:198

1. static的作用和特点

可以用来修饰:成员变量,成员方法,代码块,内部类等。具体如下所示

修饰成员变量和成员方法

静态代码块

静态内部类(static修饰类的话只能修饰内部类)

静态内部类与非静态内部类之间存在一个最大的区别:

静态导包(用来导入类中的静态资源,1.5之后的新特性):

static关键字的特点

static的注意事项

2. static变量存储位置

static变量存储位置

3. 用static静态变量潜在性问题

用static静态变量潜在性问题

4. 静态变量的生命周期

静态变量的生命周期

5. 静态变量何时销毁

静态变量何时销毁

6. 静态引用的对象回收

静态引用的对象回收

7. 静态方法变量内存图

描述Dog对象:

public class Dog {
    public static String name;

    public static int age;

    public static void showNameAge() {
        System.out.println("name:" + name + " age:" + age);
    }
}

main测试方法:

public class Demo01 {
    public static void main(String[] args) {
        Dog.name = "阿白";
        Dog.age = 98;

        Dog.name = "李双";
        Dog.age = 90;

        Dog.showNameAge();
    }
}

//执行结果:name:李双 age:90

大概流程就是

  1. 执行 java Demo01 是给JVM发送指令,和JVM说:把这个 Demo01.class 去执行;
  2. JVM就去执行 Demo01.class 文件里面的字节码,首先第一步 是把 Demo01.class字节码加载进内存;
  3. 第二步把Demo01.class放入字节码存放区;
  4. 第三步把Demo01里面的静态数据(静态变量 与 静态方法)分配到 静态区;
  5. 第四步main方法进栈,如何进栈的,是把静态区里面的main方法拿到运行区(栈) 然后就进栈了;
  6. 第五步main方法执行 Demo. 的时候,就在此时 才把Dog.class加载进内存;
  7. 第六步把Dog.class放入字节码存放区;
  8. 第七步把Dog里面的静态数据(静态变量 与 静态方法)分配到 静态区;
  9. 第八步 在main方法中执行 Dog.name 是向静态区去找到 Dog.name 拿来使用,由于是共享的 name 只保持最后修改的数据;

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

A:所属不同

B:内存中位置不同

C:内存出现时间不同

D:调用不同

推荐阅读:
  1. 《Java架构筑基》从Java基础讲起——泛型擦除
  2. 《Java架构筑基》从Java基础讲起——泛型的使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java static 后端开发

上一篇:sqlite_fdw 使用

下一篇:TCPIP详解 卷一核心概念整理

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》