5.25课堂笔记之实例全局变量&静态全局变量

对象的构造与初始化

变量及其作用范围

变量:

  1. 都有类型,都必须定义在类中

  2. 使用前都必须先声明变量类型,可以为简单或者引用类型
    ——局部一般都在栈中对应方法的工作空间


引用类型创建开辟四个空间

所有的局部变量都在栈帧中开辟,

所有的局部变量都没有this指针,且不能自动初始化

在为其初始化前,其没有确切初值,为垃圾值,使用前必须为其赋初值才可使用
方法结束,即释放

局部变量在方法或类的语句块中定义

实例全局变量的全局性体现在其归该类对象的所有方法,体现在对象范围


实例全局变量:

何时开辟:创建对象

在哪:堆区

开辟几次:有多少对象
不同对象可以有同名全局变量

谁可用:仅对象可用(因为有this指针,就算是方法也是通过对象的this指针找到的)

作用范围:对象内部,所有类共有,该类对象的所有方法均可使用。

销毁:随对象销毁

是否会自动初始化:会,除了若还未赋值即拿来使用,系统会给他一个默认的初值(默认初始化)除此之外,构造方法也可对其进行初始化


静态全局变量:

何时开辟:类加载时就开辟

在哪:方法区的中数据区的静态数据区

开辟几次: 一次,之后进行静态绑定

谁可用:
1.类可以使用

2.对象通过引用机制也可使用,一个带有静态全局变量类的对象自动获得该静态全局变量的引用。

作用范围:
该静态全局变量归该类的所有对象所公有。静态全局变量本身没有this指针(类似静态方法,除主方法外也可通过引用机制通过对象调用)。

销毁:直到整个程序执行完毕

是否会自动初始化:会,在类加载时即初始化,或使用静态代码块为其初始化(即写在前面的花括号区域,没有方法名的方法)


堆区的属性和方法才有this指针


实例全局变量和静态全局变量不能重名


如果对象在生存周期时,指向其的变量指向其他对象,如new了一个新的,则该对象成为游离对象,且由于方法还未执行完毕,对象不会被销毁,可能造成内存泄漏,因为垃圾回收(GC)机制不能找到该对象。——>垃圾回收机制不能避免内存泄漏,只能改善和缓解

猜你喜欢

转载自blog.csdn.net/qq_36154665/article/details/80488244