zoukankan      html  css  js  c++  java
  • Java中的static 静态

    最近实训结束了,在实训答辩的时候,我讲的知识点是static 

     但是自己就看了一个晚上,也没怎么理解,答辩的时候老师还跟我讲了一下!

    static 的优点 : 

    1、对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份。

    2、可以直接被类名调用。

    细说一下这两个优点:

    第一:节省空间,这个static的变量会在程序执行的时候,单独分配一个地址内存!不是静态修饰的变量,只有在new的时候才会分配地址!

     第二: static的内存是存放在栈里边的 , new出来的内存是存放在堆里边的 ;

     

    缺点:  

    1、生命周期过长;

    这个static 相当与一个“全局变量” 

    2、造成代码的耦合度过高

    3、访问出现局限性,只能访问静态。在静态方法中不能访问非静态的变量

    下面这个是某博主的图片,就根据这个图片说一下:

     str1 是静态的,str2不是静态的, print1不是静态的,print2是静态的代码块

    根据我们上面的哪句话,可以看到print2里边报错了 , 静态方法调用了非静态的变量str2

    其实它的报错原理很简单,就是内存问题 

    我们知道,static在类加载的时候就分配内存了,其他的是在new的时候才分配内存

    加载print2的时候,发现str2是非静态的,你没有new它,它没内存啊,你怎么能输出呢!这不是空指针异常吗!

     

    使用的时候把握住这几点:

    1、static代码块只能访问static变量

    2、非static都可以访问

    传送门:用法可以参考这篇博客

  • 相关阅读:
    angular js 自定义指令
    web api 解决跨域的问题
    angular 监听ngrepeat结束时间
    redis关闭和启动
    intellij idea快捷键
    mysql连接字符串
    crontab命令格式
    maven中scope属性的
    maven pom文件元素说明
    引入maven以外的jar包
  • 原文地址:https://www.cnblogs.com/Li-ningning/p/14261566.html
Copyright © 2011-2022 走看看