变量的作用域
1.类的成员变量:作用于整个类
静态变量:位于方法区,被所有实例共享,生命周期与类相同,可通过类名访问,也可通过引用变量来访问
实例变量:位于堆中,他的生命周期取决于实例的生命周期
2.局部变量:位于栈中,作用于方法内部,生命周期取决于所属的方法何时被调用与销毁
局部变量不能被static private protected public修饰
局部变量要先定义后使用,否则编译报错
写代码时应将局部变量的作用域最小化
只有在构造方法,实例方法中才能使用This关键字,在静态方法,代码块中不能使用
变量初始化
1.对于类变量(成员变量),jvm会初始化为默认值(即可以只声明,而不赋值,编译不报错)
2.对于局部变量,必须进行显式初始化赋值,才能使用,否则编译报错
运行时数据区:
堆区——存放对象的指向方法区的引用
方法区——存放类的类型信息、类型信息包括静态变量和方法信息,而方法信息中包含类的所有方法的字节码。
栈区——局部变量(指向堆区),main方法的调用
例如:Doll beibei = new Doll("贝贝");
其中beibei在栈区,指向一个名字为“贝贝”的Doll实例(在堆区),而Doll实例含有的方法则指向方法区。