final关键字:最终态——修饰成员变量,成员方法,类
final修饰变量:
基本类型变量:该变量为常量不能被赋值
引用类型变量:该地址不能被概变
地址不能被概变的原因:
final Student s = new Student();
s.age = 100;
//输出100
//s是个地址,final挂在了s头上,这个地址不能变了,但是地址指向的age内容可以变。
如果:
s = new Student();//则报错,s这个地址已经被final修饰不可以变化
final修饰自定义常量:
字面值常量
int a = 10;
a = 20;
a变了是个变量,10没变,10是字面值常量
3.1415926比较复杂,是字面值常量不好记。
能不能给这个常量起个名字?
double PI = 3.1415926,但是PI可以随意被更改,下次使用可能已经被更改,因此
自定义常量
final double PI = 3.1415926;
这个PI就是自定义常量了,永久保存,永远变不了。
final修饰方法:该方法最终方法不可被重写
final修饰类:该类为最终类,不能被继承
static:静态——修饰成员变量,成员方法
被类的所有对象共享。
静态变量和静态方法:
建议通过类名来访问,方便记忆它是跟着类走的
静态成员方法的使用注意事项:
静态成员方法内只能访问静态成员(静态成员变量和静态的成员方法):
静态不能直接访问非静态的,因为静态的在创建对象之前就初始化完毕,但是此时非静态的成员还未进行初始化。
静态成员的使用注意事项:
静态成员推荐使用的方式就是————类名.静态成员名称。
对象名称.静态成员名称是可以的,
不管是否是静态成员,都可以采用对象调用。