标签:使用 sp on 文件 数据 bs 代码 as new
静态:static关键字 用于修饰成员(成员变量和成员函数)
静态修饰内容 被对象所共享
特点:
随着类的加载而加载
就是说,静态会随着类的消失而消失。生命周期长。
优先于对象存在
成员变量也叫实例变量 对象在才在
静态成员变量也叫类变量 类在就在了 类先存在对象后存在。
被所有对象共享
可以直接被类调用
注意:
静态方法只能访问静态成员
没对象可以 类.静态方法 对象都没怎么访问实例变量
静态方法中不可以写this, super关键字
同理 对象都没哪里来的this
主函数是静态的
当成员被静态修饰后,就多了一个调用方式。 没对象也可以被调用。
除了可以被对象调用外还可以直接被类名调用。 类名.静态成员
static成员 在方法区 共享区 数据区 3种叫法。里面存放了方法和共享数据。
实例变量和类变量区别:
存放位置:类变量随着类的加载而存在存在于方法区中
实例变量随着对象建立而存在堆内存中
生命周期:
类变量随着类的消失而消失
实例变量随着对象的消失而消失
静态的利弊:
利:对对象的共享数据进行单独的存储。节约空间。没必要每个对象都存储一个
可以直接被类名调用。
弊: 生命周期过长,访问出现局限性(只能访问静态。)
什么时候使用static; 要分两方面:
因为静态修饰的内容有成员变量和函数
什么时候定义静态变量(类变量)呢
当对象中出现共享数据时,该数据被静态所修饰 对象中的特有数据定义成非静态存在堆内存。
什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象特有数据),该功能可以定义成静态的。
静态应用
每一个应用程序中都有共性的功能。
可以将这些功能进行抽取,独立封装。以便复用。
虽然可以通过建立类的对象使用这些工具的方法,如果对象不需要对特殊数据(成员变量)
可以将类中的方法定义成static的,直接通过类名调用即可。
将方法都静态后,可方便使用,但是该类还是可以被其他程序建立对象。
为了更为严谨,强制让该类不能建立对象。
可以通过将构造函数私有化完成。
静态代码块
格式
static{
静态代码块中的执行语句。
}
特点
随着类的加载而执行,只执行一次。并优先于构造函数。创建对象或者 类.静态函数后就不执行了
空指向类是不加载的,只有用到才执行。
用于给类进行初始化。不用建立对象就初始化。
prreson p = new person("zhangsan",20);
1 因为new用到person.class:所以会先找到person.class文件并加载到内存。
2 执行该类中的static代码块,如果有的话,给person.class类进行初始化。
3 在堆内存中开辟空间, 分配内存地址。
4 在堆内存中建立对象的特有属性,并进行默认初始化。
5 对属性进行显示初始化。
6 对对象进行构造代码快初始化。
7 对对象进行对应的构造函数初始化
8 将内存地址赋给桟内存中的P变量。
标签:使用 sp on 文件 数据 bs 代码 as new
原文地址:http://www.cnblogs.com/suifengyongye/p/4162784.html