• Java中的静态变量、静态方法问题


    由关键字static所定义的变量与方法,分别称为静态变量和静态方法,它们又都被称为静态成员

    1.静态方法

      无需本类的对象也可以调用此方法,调用形式为“类名.方法名”,静态方法常常为其他类提供一些方法而被定义。但是静态方法和非静态方法在定义时有两个需要注意的点

      (1)静态方法只能访问静态数据,而非静态方法既能访问静态数据也能访问非静态数据。

      (2)静态方法中只能访问静态方法,而非静态方法既能访问静态方法也能访问非静态方法。

    造成原因:

      静态方法会随着类的定义而分配和装载进内存中,而且只被分配了一个内存空间,因此类的实例调是共享这个静态方法的内存的。也是因此,静态方法如果引用了非静态的,它无法从内存中找到非静态的代码段。

    2.静态变量

      静态变量与静态方法类似,由于在类被定义和装载时,只分配了一块存储空间,因此所有此类的实例共享该静态变量的内存。进而导致只要一个实例中静态变量发生改变,所有此类的实例所调用的静态变量都会发生改变。

      需要特别注意一点:static定义的变量会优先于任何其他非static变量定义,在static后跟{}并在其中定义变量,那么这些变量会优先static之前的非static变量定义,这种方法称为显式的静态变量初始化,只会在类第一次被装载的时候初始化一次。

    额外点:还有用static定义的类,但是这种类只能是一个内部类(即在其他类的内部定义),但是一旦被定义为静态类之后,这个类就能类似于一个普通类搬直接被使用,不需要先实例一个外部类。声明的形式为    外部类名.静态的内部类名  实例名 = new  外部类名.静态的内部类名();

  • 相关阅读:
    单元测试之NUnit一
    第一个基于ArcGIS的Android应用
    NuGet的安装和使用
    PIE调用Python获得彩色直方图
    PIE调用Python返回得到直方图矩阵数组
    PIE属性表多字段的文本绘制
    微信公众号配置和使用客服消息
    python多线程爬取斗图啦数据
    微信小微商户获取申请状态
    微信小微商户申请入驻
  • 原文地址:https://www.cnblogs.com/xiang9286/p/9664686.html
Copyright © 2020-2023  润新知