对于姓名,年龄,学号来说,每个对象都要自己独立的数据
但是对于所在教室来说,这应该是多个对象共享同一份数据
只在类中保存唯一一份,那所有本类对象共享同一份
一旦用了static关键字,那么这样的内容不再属于对象自己,而是属于类的,所以凡是本类的对象,共享同一份
如果一个成员变量使用static关键字,那么这个对象不再属于某个对象,而是属于某一个类
一旦使用了static修饰成员方法,那么这就成为了静态方法
静态方法不属于对象,而是属于类的
如果没有关键字static,那么必须要创建对象,然后通过对象才能使用它
对于静态方法,可以直接使用类名来进行调用,也可以直接通过类名来进行调用
无论是成员变量还是成员方法,如果有了static,都推荐使用类名称来进行调用
静态变量:类名称.静态变量
静态方法:类名称.静态方法()
对于本来当中的静态方法,可以省略类名称
注意事项:
静态只能直接访问静态,不能直接访问非静态
成员方法可以访问静态变量
原因:因为在内存中先有的静态内容后有的非静态,后人知道先人,先人不知道后人
静态方法当中不能使用this
静态方法跟对象没有关系,不能使用this关键字
根据类名称访问静态成员变量的时候,全程和对象就没关系
只和类有关系
静态代码块的格式
public class 类名称{
static{
sout("静态代码块“”)
}
}
每当第一次使用本类时,静态代码执行唯一的一次
静态内容总是优先于非静态,
所以静态代码块比构造方法先
静态代码块,用来一次性对静态成员变量进行赋值
当第二次利用构造函数创建对象的时候,就不在执行静态代码块的执行了