【java基础】成员变量和局部变量02

成员变量和局部变量(2)

成员变量的初始化和内存中的运行机制

        当系统加载类或者创建类的实例的时候,系统会自动为成员变量分配内存空间,并自动指定初始值。

package object;  
  
public class Person {  
    //定义一个静态的变量  
    public static String city;  
    //定义一个非静态的变量  
    public String name;  
      
    public static void main(String[] args) {  
          
        /*当person类加载的时候,静态变量就已经存在了,在堆内存中*/  
        //实例化person对象 在堆内存中创建一个person对象   
        //里面有一个属性name = null;  
        //在栈内存中有一个p指向这个对象  
        Person p = new Person();  
        //给name属性赋值  
        p.name="郑小辉";  
        //通过类名给city赋值  
        Person.city="合肥";  
        //通过对象给city赋值  
        p.city="蚌埠";  
        //创建一个新的person对象  
        Person p1 = new Person();  
        //给name赋值  
        p1.name="郑大钱";  
    }  
}  

 

 

局部变量的初始化和内存中的运行机制

        局部变量(除了形参)必须要显性初始化后才能使用,系统不会为局部变量执行初始化,也就是定义了局部变量之后,系统不会给这个变量分配内存空间,直到程序为变量赋初始值之后,系统才会给他分配内存空间并将初始值保存在里面。

        局部变量不属于任何类或实例,所以总是会保存在所在方法的栈内存中,基本数据类型保存的是数据本身,引用数据类型保存的是引用

        栈内存中的变量无需系统垃圾回收,局部变量只保存基本数据类型的值或对象的引用,所以占得内存区通常比较小。

posted @ 2016-08-11 22:28  郑小辉  阅读(627)  评论(0编辑  收藏  举报