zoukankan      html  css  js  c++  java
  • Java static , final和常量设计

    staic

    static 是静态的,Java中特殊的关键字。
    Java中的static关键字(可作用在)
    1.变量 2.方法 3.类 4.匿名方法块
    static 变量-个类的所有对象的共有成员变量。

    • static变量只依赖于类存在(通过类既可以访问),不依赖于对象实例存在。即通过类名即可访问。
    • 同一个类所有的对象实例,都共享存储在一个空间的静态变量。
      静态变量在类中的作用如下:
      1.静态变量可以被类的所有实例共享,因此静态变量可以作为实例之间的共享数据,增加实例之间的交互性。
      2.如果类的所有实例都包含一个相同的常量属性,则可以把这个属性定义为静态常量类型,从而节省内存空间。例如,在类中定义一个静态常量 PI。
      注意:在类中定义静态的属性(成员变量),在 main() 方法中可以直接访问,也可以通过类名访问,还可以通过类的实例对象来访问。

    static 方法

    • 静态方法也无需通过对象来引用,而通过类名可以直接访问。
    • 在静态方法中,只能使用静态变量,不能使用非静态变量。
    • 静态方法禁止使用非静态方法。
      静态方法与实例方法的区别如下:
      1.静态方法不需要通过它所属的类的任何实例就可以被调用,因此在静态方法中不能使用 this 关键字,也不能直接访问所属类的实例变量和实例方法,但是可以直接访问所属类的静态变量和静态方法。另外,和 this 关键字一样,super 关键字也与类的特定实例相关,所以在静态方法中也不能使用 super 关键字。
      2.在实例方法中可以直接访问所属类的静态变量、静态方法、实例变量和实例方法。
      static块
    • 只在类第一次被加载时调用。
    • 换句话说,在程序运行期间,这段代码只运行一次。
    • 执行顺序:static块 -> 匿名块 -> 构造函数。

    总结:
    -static变量:不管有多少个对象,内存中只有一份。
    -static方法:可以用类名直接引用,无需用类名来引用。
    -stacti块:只执行一次,并且static块 -> 匿名块 -> 构造函数。
    注:不建议编写块代码,因为块代码会给程序带来混淆。建议将块代码封装成函数再调用。

    单例模式

    单例模式,又名单态模式,Singleton
    限定某一个类在运行过程中,只能保留一个实例对象在内存里。
    单例模式:

    • 保证一个类有且只有一个对象。
    • 采用static来共享对象实例
    • 采用private构造函数,防止外界new操作。

    总结:

    • 设计模式:是经过验证的,用于某些场合的解决方案。
    • GoF提出23种设计模式:创建型,结构型和行为型。
    • 单例模式保证一个类在内存空间中只有一个对象。

    final

    Java中的final关键字同样可以用来修饰 1.类 2.方法 3.字段
    final的类不能被继承
    父类中如果有final的方法,子类中不能改写此方法。
    final对象的指针固定了,因此因此只能修改对象内部的值,而不能指向一个新的对象(内存空间)。
    final的变量,不能再次赋值。

    • 如果是基本类型的变量,不能修改其值。
    • 如果是对象实例,则不能修改其指针。(但是可以修改对象内部的值)
      注意:注意:final 修饰的变量不能被赋值这种说法是错误的,严格的说法是,final 修饰的变量不可被改变,一旦获得了初始值,该 final 变量的值就不能被重新赋值。

    总结:
    1.final类:不能被继承
    2.final方法:不能被子类改写
    3.final变量:基本类型不能修改值,对象类型不能修改指针。

  • 相关阅读:
    SCI写作经典替换词,瞬间高大上!(转)
    最佳化常用测试函数 Optimization Test functions
    算法复杂度速查表
    VS 代码行统计
    CPLEX IDE 菜单栏语言设置( 中文 英文 韩文 等多国语言 设置)
    如何从PDF文件中提取矢量图
    Matlab无法打开M文件的错误( Undefined function or method 'uiopen' for input arguments of type 'char)
    visual studio 资源视图 空白 解决方案
    MFC DialogBar 按钮灰色不响应
    嗨翻C语言笔记(二)
  • 原文地址:https://www.cnblogs.com/Acapplella/p/13326424.html
Copyright © 2011-2022 走看看