类变量/静态变量
在类里定义一个public static int count,这样的话,这个变量就独立于堆中,正常类的属性都保存在每一个对象单独的地址,这次每个对象都指向堆中一个公共的空间!实现了数据共享,当然任何一个该类的对象去修改它时,修改的也是同一个变量
访问类变量名:
类名.类变量名(类变量是随着类的加载而创建的,即使没有创建对象实例也可以访问)
对象名.类变量名
类变量的注意事项和使用细节
- 当所有对象需要共享数据时使用类变量
- 实例变量时每个对象独享的,类变量时该类的所有对象共享的
- 加上static称之为类变量或静态变量,否则称之为实例变量/普通变量
- 实例变量不能通过类名.属性来访问
- 类变量实在类加载时就初始化了,也就是说,即使你没有创建对象,只要类加载了,就可以使用类变量了
- 类变量的声明周期是随着类的加载开始,随着类消亡而毁灭
十三、类方法/静态方法
形式:访问修饰符 static 数据返回类型 方法名()
调用:类.方法
静态方法就可以访问静态属性
类方法的经典使用场景:
当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率(静态类最大的好处就是不用实例化对象就可以调用,在内存中不用重新开空间)比如Math,Array类
类方法的注意事项和细节讨论
- 类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区,类方法中无this的参数
- 类方法可以通过类名调用
- 类名调不了普通方法
- 类方法中不允许使用和对象有关的关键字,比如this和super
- 类方法只能访问静态变量或静态方法
- 普通成员方法,既可以访问普通变量(方法),也可以访问静态变量(方法)