java定义静态变量的作用 static关键字

Posted 买糖买板栗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java定义静态变量的作用 static关键字相关的知识,希望对你有一定的参考价值。

我们知道类中的静态变量在程序运行期间,其内存空间对所有该类的对象实例而言是共享的,为了节省系统内存开销、共享资源,应该将一些变量声明为静态变量。通过下面的例子,你就会发现有什么不同。

代码一:

public class MemoryTest   
     static class Data  
         private int week;  
         private String name;  
         Data(int i, String s)  
             week = i;  
             name = s;  
           
       
       
     Data weeks[] =   
             new Data(1,"monday"),  
             new Data(2,"Tuesday"),  
             new Data(3,"Wednesday"),  
             new Data(4,"Thursday"),  
             new Data(5,"Friday"),  
             new Data(6,"Saturday"),  
             new Data(7,"Sunday")  
     ;  
       
     public static void main(String[] args)   
         final int N = 20000;  
         MemoryTest test = null;  
         for (int i = 0; i <=N; i++)   
            test = new MemoryTest();  
           
         System.out.println(test.weeks.length);  
       
  

代码二:

public class MemoryTest   
      static class Data  
          private int week;  
          private String name;  
          Data(int i, String s)  
              week = i;  
              name = s;  
            
        
       
     static Data weeks[] =   
             new Data(1,"monday"),  
             new Data(2,"Tuesday"),  
             new Data(3,"Wednesday"),  
             new Data(4,"Thursday"),  
             new Data(5,"Friday"),  
             new Data(6,"Saturday"),  
             new Data(7,"Sunday")  
     ;  
       
     public static void main(String[] args)   
         final int N = 20000;  
         MemoryTest test = null;  
         for (int i = 0; i <=N; i++)   
             test = new MemoryTest();  
           
         System.out.println(test.weeks.length);  
       
   


我想大家应该发现上面那两个类的区别了吧!

 Data weeks[] 与  static Data weeks[] 

代码一会在内存中保存20000个weeks的副本,而代码二则在内存中保存1个weeks的副本,然后共享该副本,这样的话就不会造成内存的浪费。

虽然 静态的变量能节约大量的内存,但是并不是所有的地方都适合用,建议大家在下列条件都符合的情况下,尽量用静态变量:

(1)变量所包含的对象体积较大,占用内存较多。

(2)变量所包含的对象生命周期较长。

(3)变量所包含的对象数据稳定。

(4)该类的对象实例有对该变量所包含的对象的共享需求。

如果变量不具备上述特点,建议不要轻易使用静态变量,以免弄巧成拙。

最后,再提一点内存的优化,就是有关对象的重用,比如:对象池和数据库连接池等。那样的话,是很节约内存空间的,不过,在用的时候要考虑各个方面,比如:运行环境的内存资源的限制等。为了防止对象池中的对象过多,要记得清除。


开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于java定义静态变量的作用 static关键字的主要内容,如果未能解决你的问题,请参考以下文章

static关键字的作用

java基础之static关键词的作用

java中static的作用详解

在C语言中具体静态变量static要这么去用?

JAVA! static啥作用?

c语言中static的作用和用法