1 static 关键字
A 作用
用static 关键字修饰成员
1.1 修饰属性
static 属性名
作用:实现所有对象的共性数据的共享,提高内存的使用率
1.2 修饰方法
static 返回值 方法名
作用:简化方法的访问形式
如果用static 修饰方法注意:
1.3 方法中不能出现this,super关键字
1.4 不能直接访问非静态的成员
1.5 方法中不能出现对象特有的数据,方法中没有出现成员属性
B 细节
1.1 如果成员被static 修饰,成员就多出一种访问形式,直接用类名.成员
1.2 static修饰的成员是随着类的加载而加载
1.3 main方法必须是静态
C static 修饰成员属性和不修饰之间的区别
1.1 概念的不同
static 修饰的称为类成员,非静态称为实例或者对象成员
1.2 保存位置不同
静态保存到方法区的静态区,非静态的保存到对象的堆内存空间
1.3 生命周期不同
静态随着类的加载而加载,随着类的消失而消失
非静态的随着对象的产生而产生,随着对象被jvm的垃圾回收机制回收则消失
1.4 数据共享范围不同
静态的所有对象共享
非静态的只对特定的对象有效
2 静态代码块--面试
1 语法
2 用来对整个类进行初始化,在类加载的时候需要执行一部分代码,
只在类加载的时候执行一次,而且是主动执行
连接数据的时候会用静态代码块
3 static代码块 构造代码块 构造函数
首先执行静态代码块(静态代码块只执行一次),再构造代码块(创建多少个对象执行多少次,所有对象进行共同初始化)
然后再执行构造函数(对某个对象进行特定初始化)
1 语法
static
{
}
2 用来对整个类进行初始化,在类加载的时候需要执行一部分代码,
只在类加载的时候执行一次,而且是主动执行
连接数据的时候会用静态代码块
3 static代码块 构造代码块 构造函数
首先执行静态代码块(静态代码块只执行一次),再构造代码块(创建多少个对象执行多少次,所有对象进行共同初始化)
然后再执行构造函数(对某个对象进行特定初始化)