随训录 OOP_3.静态成员变量

来源:互联网 发布:终极蜘蛛侠网络勇士 编辑:程序博客网 时间:2024/05/21 15:45

前天因为时间和文档的关系,昨天的博客没有更新,深感歉意,以后还是坚持一下,争取可以做到每日一更。昨天自习看了李彦宏的《开讲了》,感触很多。关键的时候做好自己的抉择!然后一步一步做自己的事情,记得任何时候都是自己的事情。想法深处有一句话感觉特别有感:大学学习就是有指导性的自主学习。

找了一些有关于静态成员的资料:

(1)静态成员包括静态数据成员和静态成员方法

(2)静态成员属于整个类而不是属于某个对象,它被该类的所有对象共享

(3)访问静态成员时一般通过类名访问,也可以通过对象访问

(4)静态成员也受访问权限的约束

(5)静态数据成员在使用之前应尽量初始化

(6)静态成员方法不能操作非静态成员

(7)静态成员方法没有this访问

成员变量和静态变量的区别:

1.两个变量的生命周期不同

成员变量随着对象的创建而存在,随着对象被回收而释放

静态变量随着类的加载而存在,随着类的消失而消失

2.调用方式不同

成员变量只能被对象调用

静态变量可以被对象调用,还可以被类名调用

3.别名不同

成员变量也称为实例对象

静态变量也称为类变量

4.数据存储位置不同

成员变量存储在堆内存的对象中,所以也叫对象的特有数据

静态数据成员存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据


列表对比

成员变量,局部变量,静态变量的区别(类包含对象,对象包含方法,方法包含属性)

成员变量  局部变量          静态变量

定义位置      在类中,方法外      方法中,或者方法的形式参数        在类中,方法中

初始值         有默认初始值      无,先定义,赋值后才能使用         有默认初始值

调用方式 对象调用                 -----------     对象调用,类名调用

存储位置          堆中      栈中     方法区

生命周期 与对象共存亡   与方法共存亡 与类共存亡

别名 实例对象----------------    类变量


JAVA中的初始化的顺序

JAVA类首次装入时,会对静态成员变量或方法进行一次初始化,但方法不被调用是不会执行的,静态成员变量和静态初始化块级别相同,非静态成员变量和非静态初始化块级别相同。初始化顺序是:

先初始化父类的静态代码--->初始化子类的静态代码--->(创建实例时,如果不创建实例,则后面的不执行)初始化父类的非静态代码(变量定义等)--->初始化父类的构造函数--->初始化子类的非静态代码(变量定义等)--->初始化子类的构造函数

类只有在使用new调用创建的时候才会被JAVA类装载器装入创建类实例时,首先按照父子继承关系进行初始化类实例创建时候,首先初始化部分先执行,然后构造函数,然后从本类继承的子类的初始化块执行,最后是子类的构造方法类消除时候,首先消除子类部分,再消除父类部分。

*静态方法必须访问静态变量和静态方法。

下一篇博客,我会把这段时间(差不多35天左右)的一些总结一下,主要还是方法和思想之类的。可能会很浅,但至少都是自己的。加油!

0 0
原创粉丝点击