黑马程序员技术交流社区

标题: static关键字 [打印本页]

作者: jiaweizhang    时间: 2015-9-17 12:13
标题: static关键字
static (静态的)   修饰符:用于修饰成员(成员变量,成员方法)
静态修饰的内容被对象共享(节约内存空间),除了被对象调用,还能被类调用,写法 类名.静态成员

特点:
1.随着类的加载而加载---会随着类的消失而消失,生命周期最长
2.优先于对象存在
3.被所有对象共享
4.可以直接被类名调用

共享区(方法区、数据区):存放类中的方法,类中的共享数据,static修饰的成员存放在方法区

成员变量(实例变量)和类变量(static修饰)的区别:
1.存放位置:
        类变量随着类的加载而存在于共享区中。
        实例变量对着对象的建立而存在于堆内存中。
2.生命周期:
        类变量生命周期最长,随着类的消失而消失。
        实例变量生命周期随着对象的消失而消失。

注意:
1.静态方法只能访问静态成员(方法、变量)
  非静态方法既可以访问静态,也可以访问非静态
2.静态方法中不可以定义this,super关键字

静态方法的使用:
当一个类中未封装特有的数据,该类的方法只体现功能,则方法可以定义成静态方法。外部类不需要创建对象就可以直接调用
为了程序更严谨,强制让该类不能创建对象,用私有化(private)构造方法完成,如果方法也不需要外部调用,也将其私有化处理
作者: 不爱念经的小僧    时间: 2015-9-17 14:22
静态方法不能定义this,super等关键字的原因是:静态是随着类的加载而加载的,也就是说在静态加载时,调用该方法的对象是不存在的,所以静态方法中不能定义this,super关键字




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2