final:最终的
1:修饰的类不能被继承
提高安全性,提高程序的可读性
2:修饰的方法不能被重写
3:修饰的属性为常量::
(1)一旦初始化,不能再被赋值,
(2)如果只是声明一个final 常量,只能在构造方法中或代码块中赋值,
(3)不能在普通方法中赋值。
(4)如果有多个构造方法,每个构造方法都必须对其赋值。
(5)习惯用大写字母表示
(6) 存储在常量池中
static:静态的
1:static 不能放到class 前面,可以放到方法或属性前
2:如果访问控制权限允许,可以不必创建该类对象而直接用 类名.方法名()
3:静态方法只能调用静态成员变量,不能调用普通成员变量
4:static 修饰的成员变量,属于这个类的所有对象共有,一个对象改变该变量的值,其他对象的该变量的值也会改变
5:static 修饰的变量也称为类变量
6:在static 的方法中,不能有this, this 指的是单一一个对象,而static 是所有对象共享的(不需要实例就可以访问)
7:main() 方法是静态的,因此JVM在执行main方法不需要main()方法所在的类的实例对象,main()不能直接访问该类中的非静态成员
8:static{
}
静态代码块,随着类的加载而加载,在加载构造方法前加载,而且只加载一次
9:成员变量与与类变量的区别:
(1)成员变量随着对象的创建而存在,随着对象的回收而释放
静态变量随着类的加载而存在,随着类的消失而消失
(2)调用方法不同
成员变量只能被对象调用
静态变量可以被对象调用,还可以被类名调用。
(3)别名不同。
成员变量也称为实例变量。
静态变量称为类变量。
(4)数据存储位置不同。
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据.
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据.