Java-类变量,类方法
类变量,类方法
【类变量】
-
介绍
类变量(又叫静态变量)是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。
定义类变量:访问修饰符 static 数据类型 变量名;
-
内变量内部布局
jdk8以及以前,放在静态域;jdk8以后放在堆中(class对象),当你的类加载的时候会在堆生成一个类的class对象) -
要记住的是
(1)static变量是同一个类所有对象共享的
(2)static类变量,在类加载的时候就生成了(即类加载的时候就会初始化类变量)
(3)类变量的生命周期是随类的加载开始,随着类的消亡而销毁。 -
类变量的访问
可以通过类名.类变量名
或者对象名.类变量名
来访问,但Java设计者推荐我们使用类名.类变量名
的方式来访问。
【类方法】
-
介绍
类变量也叫静态变量。
定义格式如下:访问修饰符 static 数据返回类型 方法名(){}
-
类方法经典的使用场景
(1)当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率。
(2)比如工具类中的方法 utils
Math类、Arrays类、Collections集合类
(3)在实际开发中,往往将一些通用的方法,设计成静态方法,这样我们不需要创建对象就可以使用,比如打印一维数组,冒泡排序等等 -
类方法与普通方法
(1)类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区:类方法中无this的参数,普通方法中隐含着this的参数。
(2)类方法可以通过类名或对象名调用,而普通方法只能通过对象名调用。
(3)类方法中不允许使用和对象有关的关键字,比如this和super。普通方法可以。(因为当用类名.类方法名
调用的时候,this和super指示不明)
(4)类方法中,只能访问 静态变量 或 静态方法;而普通方法既可以访问普通变量(方法),也可以访问静态的。 -
Java中static静态方法可以继承吗?可以被重写吗?
1,可以被继承,但是不能被重写,如果父子类静态方法名相同,则会隐藏derive类方法(调用base类的方法)
2.静态方法是编译时绑定的,方法重写是运行时绑定的。
static修饰的方法不能能被重写
静态非静态的访问等等,一句话本质就是创建时间问题(类的class对象先于这个类的对象)