Java-类变量,类方法

类变量,类方法

【类变量】

  1. 介绍
    类变量(又叫静态变量)是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。
    定义类变量:访问修饰符 static 数据类型 变量名;

  2. 内变量内部布局
    jdk8以及以前,放在静态域;jdk8以后放在堆中(class对象),当你的类加载的时候会在堆生成一个类的class对象)

  3. 要记住的是
    (1)static变量是同一个类所有对象共享的
    (2)static类变量,在类加载的时候就生成了(即类加载的时候就会初始化类变量)
    (3)类变量的生命周期是随类的加载开始,随着类的消亡而销毁。

  4. 类变量的访问
    可以通过 类名.类变量名 或者 对象名.类变量名 来访问,但Java设计者推荐我们使用 类名.类变量名 的方式来访问。


【类方法】

  1. 介绍
    类变量也叫静态变量。
    定义格式如下:访问修饰符 static 数据返回类型 方法名(){}

  2. 类方法经典的使用场景
    (1)当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率。
    (2)比如工具类中的方法 utils
    Math类、Arrays类、Collections集合类
    (3)在实际开发中,往往将一些通用的方法,设计成静态方法,这样我们不需要创建对象就可以使用,比如打印一维数组,冒泡排序等等

  3. 类方法与普通方法
    (1)类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区:类方法中无this的参数,普通方法中隐含着this的参数。
    (2)类方法可以通过类名或对象名调用,而普通方法只能通过对象名调用。
    (3)类方法中不允许使用和对象有关的关键字,比如this和super。普通方法可以。(因为当用类名.类方法名调用的时候,this和super指示不明)
    (4)类方法中,只能访问 静态变量 或 静态方法;而普通方法既可以访问普通变量(方法),也可以访问静态的。

  4. Java中static静态方法可以继承吗?可以被重写吗?
    1,可以被继承,但是不能被重写,如果父子类静态方法名相同,则会隐藏derive类方法(调用base类的方法)
    2.静态方法是编译时绑定的,方法重写是运行时绑定的。
    static修饰的方法不能能被重写

静态非静态的访问等等,一句话本质就是创建时间问题(类的class对象先于这个类的对象)


【小练习】

image

posted @ 2021-09-10 16:42  Wiiiimp  阅读(1558)  评论(0编辑  收藏  举报