final和static|青训营笔记

94 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第15天

浅复习一下final和static的用法

final关键字:可以修饰成员方法,成员变量,类

  • final修饰的特点:
  1. 修饰方法:表明该方法是最终方法,不能被重写
  2. 修饰变量:表明该变量是常量,不能再次被赋值
  3. 修饰类:表面该类是最终类,不能被继承
  • final修饰局部变量
  1. 变量是基本类型:final修饰指的是基本类型的数据值不能发生改变
  2. 变量是引用类型:final修饰指的是引用类型的地址值不能发生改变,但是地址里面的内容是可以发生改变的
  3. final修饰的成员变量被称为常量,必须且只能在定义时或构造方法中赋值,如果不赋值,程序报错
  4. static修饰的成员变量,可以在任意时候赋值(构造方法,静态代码块等等),如果不赋值,系统会自动赋值为 0
  5. 被final和static同时修饰的成员变量,必须且只能在定义时或静态代码块内赋值,不能在构造方法中赋值,静态变量若用final修饰若想不是默认初始化值则必须在声明时和静态代码块中赋值,这是因为静态变量是和类一起加载进方法区构成class引用的 static变量在初次类加载时已经赋值,故不能再次赋值,static变量当然可以在任何位置赋值 但是这里已经在类加载时赋值过一次!!!
  6. 另外被final修饰的成员变量一旦赋值,是不能改变的。

static关键字:静态,可以修饰成员方法,成员变量

static修饰的特点:

  • 被类的所有对象共享,这也是我们判断是否使用静态关键字的条件
  • 可以通过类名调用:也可以通过对象名调用,推荐使用类名调用
  • static的主要意义是创建独立于具体对象的域变量或者方法所以没有创建对象,也能使用属性和调用方法
  • static还可以形成静态代码块以优化程序性能,因为它只会在类加载的时候执行一次
  • 被static修饰的变量或方法是独立于该类的任何对象,也就是这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享

static访问特点:

非静态的成员方法:

  • 能访问静态的成员变量
  • 能访问非静态的成员变量
  • 能访问静态的成员方法
  • 能访问非静态的成员方法

静态的成员方法:

  • 能访问静态的成员变量
  • 能访问静态的成员方法

总结:静态成员方法只能访问静态成员