【JavaEE进阶序列 | 从小白到工程师】类变量(static静态变量)和实例变量(非静态变量)的区别

80 阅读2分钟

前言

                 本文介绍类变量(static静态变量)和实例变量(非静态变量)的区别

🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈

一、两种变量的来源

       成员变量其实包括类变量(static静态变量)和实例变量(非静态变量)

二、类变量(static静态变量)

🔶类变量(static静态变量)的定义格式

              static关键字修饰
              
         如:  static int a;    
         
/*

注意:static表示不要实例化就可以使用  

*/

🔶类变量(static静态变量)的特点

                 1.随着类的加载而加载
                 
                 2.优先于对象存在(这样就会导致了静态方法只能访问静态变量,不能访问不是static修饰的)
                 
                 3.被所有对象所共享  (其中一个对象将它值改变,其他对象得到的也是改变后的结果)(在项目中应用比较多,同步修改)

                 4.可以直接被类名调用
 

三、实例变量(非静态变量,无static修饰)

🔶 实例变量(非静态变量,无static修饰)的定义格式

static关键字修饰
              
           如: int a;     

四、区别

区别:
      1.定义不同
      
          类变量(静态变量)定义时候前面要加上static
          
          实例变量(非静态变量)不需要加
          
      2.初始化不同
      
          类变量(静态变量)随着类的加载而初始化
          
          实例变量(非静态变量) 是new对象后才进行初始化

      3.内存位置不同
      
          类变量(静态变量)随着类的加载而存在于“方法区”中
          
          实例变量(非静态变量)存储在“堆内存区”
          
      4.调用方式不同
      
          类变量(静态变量)通过类名调用
          
          实例变量(非静态变量)通过对象调用
          
      5.生命周期不同
      
         类变量(静态变量)随着类的加载而加载,虚拟机停止运行类时,静态变量周期结束(类变量生命周期最长,随着类的消失而消失)
         
         实例变量(非静态变量)随着对象的产生而产生,随着对象的消失而失去引用,等待垃圾回收(随着对象的消失而消失)