Java中的static 静态

2021-03-07 11:30

阅读:544

标签:用法   http   static代码块   new   技术   内存   共享   出现   代码   

最近实训结束了,在实训答辩的时候,我讲的知识点是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都可以访问

用法可以参考这篇博客

 

Java中的static 静态

标签:用法   http   static代码块   new   技术   内存   共享   出现   代码   

原文地址:https://www.cnblogs.com/Li-ningning/p/14261566.html


评论


亲,登录后才可以留言!