变量按照声明的位置不同 , 分为成员变量和局部变量 ;
成员变量(属性) :
成员变量是在类中方法之外定义的变量 ; 
也是一个类的属性 ; 
局部变量(方法) :
局部变量是在方法内部定义的变量 ;
并且只能在当前方法内使用 ; 
方法的参数也算局部变量 ;
public void demo(int num){   //方法的参数也算当前方法的局部变量 ;
public void fn( ){
 int  a ;
System.out.println(a);  //报错  a的变量还未初始化
//因为局部变量没有初始值  在使用之前必须手动的完成初始化 , 未声明则报错;
成员变量与局部变量的区别 :
① 在类中的位置不同 : 
     · 成员变量在类中的方法之外定义 ; 
      ·局部变量在类中的方法内部或者方法声明上定义 ;
        (所谓方法声明上指的是方法参数);
② 内存中的位置不同 
     · 成员变量在堆内存中(是存储在对象对应的堆内存中) ;
     · 局部变量在栈内存中 ; //因为方法是存储在全局方法区 ;
//所以方法里面的变量被淋湿存储在栈内存当中;
③ 生命周期不同
     ·成员变量随着对象的存在而存在,随着对象的消失而消失
            //对象在成员变量(属性)在;对象消失成员变量消失;
      ·局部变量随着方法的调用而存在,
         随着方法的调用完毕而消失;
         因此可得 :
              成员变量生命周期很长;
              局部变量生命周期很短;
④ 初始化不同
成员变量有初始化值;
局部变量没有初始化值;//需要手动初始化
⑤ 对象的属性是存储在对象的地址堆内存中
     因为每个对象的属性值不一样,所以分开存储
     但是方法每个对象都是一样
     所以没必要在每个堆内存中存一份
     所以方法是存储在第三块内存 : 全局方法区
 
                         
                                

