java 中static final用法

final用法

1、final用在类上,表明当前类它不能被继承,没有子类。
2、final用在方法上,表明当前方法不能被override,不能被重写。
3、final用在变量上,表明当前变量是一个终态的变量,是一个常量,这个变量的值一但被赋值后就不能被改变了。
(一般final用作全局变量的时候和static连用 即final static)
对于final类型的成员变量的初始化方式:
1、声明变量时直接赋值
2、在构造方法中完成赋值,如果一个类有多个构造方法,就要保证在每个构造方法中都要完成对该final类型变量的初始化工作。


static用法

有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。

static 修饰变量

  1. 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。
  2. 在加载类的时候,static变量在内存中申请,而非在实例类的时候申请内存。类的所有实例共享同一个static变量。
  3. private是访问权限限定,static表示不要实例化就可以使用。 private static的变量表示该变量不能在其他类中通过类名来直接引用
  4. 静态变量与实例变量
    • 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类 的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。
    • 对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。
  5. 静态变量的使用场合
    • 在对象之间共享值时
    • 不需要通过实例来访问变量,方便访问变量时

static修饰方法

  1. 静态方法可以直接通过类名调用,任何的实例也都可以调用
  2. 因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract
  3. 静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。
  4. 申明为静态方法的是 为了方便方法的调用,Java API中的Math类中所有的方法都是静态的,而一般类内部的static方法也是方便其它类对该方法的调用。
发布了46 篇原创文章 · 获赞 10 · 访问量 11万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章