一般在什么情况下使用static?

编写程序时什么变量或方法要定义为static?

常用的方法,比如你有一个类叫做 DateUtils ,里面有获取当前年份的方法 getCurrentYear(),通常来说,你不会先实例化一个DateUtils类,而是直接通过类名调用,该方法通常声明为static。至于变量,如果声明为static,通常表示需要常驻内存的。

定义类本身的变量,或者类方法,而不是实例变量或者实例方法的时候用static

引用网上的资源描述如下:
作用
  有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。
  声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共同拥有一个static变量。声明为static的方法有以下几条限制:
  ·
  它们仅能调用其他的static 方法。
  ·
  它们只能访问static数据。
  ·
  它们不能以任何方式引用this 或super。