• 一旦用了static关键字,那么这样的变量内容不再属于对象自己,而是属于类的,凡是本类的对象,都共享同一份。
  • 如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类。多个对象共享同一份静态变量。
  • 如果一个成员方法使用了static关键字,那么这个就成为静态方法。静态方法不属于对象,而是属于类的。如果没有static关键字,那么必须首先创建对象,然后通过对象使用他。如果使用了static关键字,那就不用创建对象。
  • 对于静态方法来说,可以通过对象名进行调用,也可以直接通过类名称来调用。推荐使用类名称来调用。对象调用的静态方法,被编译器翻译后,也会被改为类方法调用。
  • 对于本类当中的类方法,在本类中调用,可以省略类名称,直接写方法名称。
  • 成员方法可以访问静态变量,静态方法不能直接访问非静态变量。原因是在内存中先有的静态内容,后有非静态方法。
  • 静态方法中不能使用this关键字,因为this是表示对象自己,而静态方法不需要实例化对象。
  • 在方法区中,有一块空间,叫静态区。静态变量是放在静态区中的。根据类名访问静态变量的时候,全程和对象没有关系,只和类有关系。
  • 静态代码块格式:
public class test{
  static {
   // 静态代码块的内容
  }
}
  • 静态代码块的特点是,当第一次用到本类是,静态代码块执行唯一的一次。当第二次new对象时,静态代码块不再执行。静态内容总是优先于非静态,所以new对象时,静态代码块比构造方法先执行。
  • 静态代码块的典型用途是用来一次性地对静态成员变量进行赋值。