Java中的静态变量&静态方法

静态变量&静态方法

        静态变量又叫做类变量,静态方法又被称为类方法——均被static修饰

        未被static修饰的成员变量和方法分别被称为实例变量实例方法

(1)静态方法中不需要它所属类的任何实例就可以访问,所以在静态方法中不可以使用this关键字

(2)静态方法中不可直接访问所属类的实例变量和实例方法,但可以直接访问所属类的静态变量和静态方法

        如图所示,如果在静态方法中想要直接访问所属类的实例变量和实例方法或使用this关键字,编译器都会 错

(3)静态变量(方法)的访问方式:类名.变量名(方法名)

         实例变量(方法)需要先将类实例化后才可访问:对象名.变量名(方法名)

         如图所示,未实例化时使用“类名.变量名(方法名)”就可以直接访问静态变量(方法),但无法访问相应类的实例变量和实例方法

        如图所示,当将类实例化后,使用“对象名.变量名(方法名)”就可以直接访问实例变量(方法),但无法访问相应类的静态变量和静态方法

 (4)在内存中,实例/静态成员的存储形式大致如图

        所有静态成员共享一份内存——静态变量某种意义上具有全局性质

        而不同实例间的实例变量彼此互不干涉

详解:         

        当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址。当该类创建对象后,类中的实例方法才分配入口地址,从而实例方法可以被类创建的任何对象调用执行。
        类方法在该类被加载到内存时,就分配了相应的入口地址。从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。 类方法的入口地址直到程序退出时才被取消。
注意:
        当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址。
        也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。

总结:
        类变量和类方法与类相关联,并且每个类都会出现一次。 使用它们不需要创建对象。
        实例方法和变量会在每个类的实例中出现一次。

        以下是一个代码范例:

 运行结果如图,可印证以上三点:

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树Java中的变量与常量变量的定义92123 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年5月8日
下一篇 2022年5月8日

相关推荐