在我理解看来,static就是把变量或者方法定义为全局的,及在当前类中,所有地方都可以搜到这么一个方法或是变量。
如果变量或方法是static标记的静态属性,那么对于这个类创建的所有实例,他们是唯一的不可更改的。并且,在没有对象时,也可以直接调用。
还有一部分的知识可以百度查找,这方面的资料不少。
用一个简单的例子说一下要注意的细节
package com.raint;
import java.util.Date;
import java.util.Scanner;
public class Main {
Date date=new Date();
static Scanner scan=new Scanner(System.in);
private int year,month,day;
public static void main(String[] args) {
new Main().getQuery();
}
public void getQuery(){
System.out.println("请输入你要查询的年份:");
this.year=scan.nextInt();
/*为了调用this.year,getQuery()方法必须是非静态的,没有static标记
*如果方法是静态的,将无法调用。
*因为如果方法静态,在一个具体的Main类对象没有创建时,
*直接用Main.getQuery()方法时,由于year属性没有设置,所以this.year
*将出错。
*/
System.out.println("请输入你要查询的月份:");
this.month=scan.nextInt();
System.out.println("请输入你要查询的日份:");
this.day=scan.nextInt();
}
}