本BLOG上原创文章未经本人许可,不得用于商业用途。转载请注明出处,否则保留追究法律责任的权利。
一、static关键字
基本概念
- 通常情况下成员变量隶属于对象层级的,每创建一个对象就需要申请独立的内存空间来存放该对象独立的成员变量信息,若所有对象的某个成员数值完全一样却又单独存放会造成内存空间的浪费。
- 为了解决上述问题,可以使用static关键字修饰成员变量表示静态含义,此时该成员变量由对象层级提升为类层级被所有对象共享,该成员变量随着类的加载准备就绪,与是否创建对象无关。
- 类加载只做一次,包括:
- 类名 . 的时候会类加载。
- new对象时会类加载。
- 开发人员可以用程序加载,比如:Class.forName()。
- 静态的成员属性和成员方法可以用对象 . 调用,但一般推荐用类名 . 调用。
使用方式
-
在非静态的成员方法中,既能访问非静态的成员,也能访问静态的成员。
(成员:成员变量 + 成员方法,静态成员被所有对象共享)
-
在静态的成员方法中,只能访问静态的成员,不能访问非静态的成员。
(成员:成员变量 + 成员方法,调用静态方法时可能还没创建对象)
-
只有隶属于类层级被所有对象共享的内容,才可以使用static修饰。
(不能滥用static关键字)
二、final关键字
-
基本概念:
final本意为“最终的,不可更改的”,该关键字可以修饰类、成员方法、成员变量等。
-
使用方式:
-
final关键字修饰类表示该类不能被继承。
– 为了防止滥用继承带来的危害
– 如:java.lang.String类等
-
final关键字修饰成员方法表示该方法不能被重写但可以被继承。
– 为了防止不经意间造成的方法重写
– 如:java.text.DateFormat类中的format方法等
-
final关键字修饰成员变量表示该成员变量必须初始化而且不能更改。
– 为了防止不经意间造成的数据更改
– 如:java.lang.Thread类中的MAX_PRIORITY方法等
拓展:
在开发中很少单独使用static关键字或final关键字修饰成员变量,通常都是使用public static final共同修饰成员变量来表达常量的含义,常量的命名规则是:要求所有字母大写,不同单词之间采用下划线连接,如:
public static final double PI = 3.14;
-