------- android培训、java培训、期待与您交流! ----------
static作为一个关键字,是一个修饰符,用于修饰成员
static的特点:
1.用于数据的共享。
2.被static修饰的成员都存在于方法区,随着类的加载而加载
3.为成员提供了新的访问方式: 类名。成员
4.优先于对象存在
有优点就会有缺点: 不能对特有数据进行修饰。
静态方法只能访问静态成员
静态中不能使用this,super关键字
为什么呢? 结合优点很容易看出,因为用于数据的共享,那么特有数据是不能进行修饰。
因为被修饰的成员都存在于方法去,是随类而加载的,所以在对象之前,那么就无法访问堆中的成员
同理,也就不能使用 代表对象的this和super
当静态方法访问了非静态数据时,经常会发生无法从静态上下文调用这个错误
主方法就是典型的静态。
静态的使用:静态修饰的只能是成员,所以可以按照成员方法和属性来说。
成员属性:是否是特有数据
成员方法:是否持有或者访问了对象特有的数据
那么成员变量静态前后的区别:
也是可以根据优点和缺点来说:
首先静态是共享数据,存在于方法区
随类加载和消失,提供了特殊的访问方式 类名.成员
并且如果是属性的话还可以被对象或者直接被类名调用,两种形式
而普通的成员是特有数据,只能存于对象中,也就是只能存于堆中。随着对象加载或者消失,只能使用对象来调用
静态代码块: 就是由普通代码块外加static的形式
static
{
执行语句
}
这个是随类加载,并且只执行一次,优先于主函数
静态代码块执行优先于构造代码块优先于构造函数