文章目录
#static关键字
##static修饰变量
注明:
- static不能修饰构造器,构造器的生命周期视作一般方法
- 实例变量随对象而转移,每个对象都有一套实例变量
- 类变量各对象公用
##static内存分析
- name简化内存空间(参照2.0的String内存空间分析),实际初始为null,然后赋与 地址,指向常量池某空间
- 静态域:存放静态变量
- 静态变量的创建早于对象,随类的创建而创建
- 实例变量只能通过类的对象调用,即创建了类的对象,才创建实例变量
- 类变量可通过类调用,也可通过对象调用
##static修饰方法
- 类比类变量,类方法(静态方法)既可通过类调用,也可通过对象调用
- 非静态方法则只能通过对象调用
- 静态方法不能调用非静态变量(创建有先后,先有类,即有类变量和类方法,
后有对象,才有类对象的变量和方法,父亲都没有,哪来儿子)
- 不存在this或super的原因是类变量或方法早于当前对象或父类对象(本质是对象)而创建,先来后到的问题
- 本例子也说明静态方法不能调用非静态方法(show1()默认this.show1() )
总结:先来后到,先创建的能调用后创建的
#static关键字练习
使用静态的变量实现累加效果,因为静态变量在内存中独一份
##圆形类
- total来为创建的对象计数
- 静态方法只能调用静态变量和方法
##账户类
注明:
若init为非static,则每个对象的id均为1000
上述代码省略setter/getter方法
#数组回顾
回顾以往数组的方法构建
直接用类调用静态方法的形式(数组的这些方法非每个类独有,而是数组公有)
所以将方法声明为static