static不仅可以定义静态变量,还可以定义静态方法,平时我们写的大多数main函数就是静态方法。
public class Hello{
//使用static关键字声明静态方法
public static void print(){
System.out.println("welcome to my blog");
}
public static void main (String[ ] args){
//直接使用类名调用静态方法
hello.print();
//也可以通过对象名调用,但是更推荐使用类名调用
Hello demo = new Hello();
demo.print();
}
}
以上代码运行结果为:welcome to my blog
welcome to my blog
注意事项:
1,静态方法中可以直接调用同类中的静态成员,但不能调用非静态成员
public class Hello{
String name1 = "anna";//非静态成员变量
static String name2 = "annaluo"//静态成员变量
public static void print(){
System.out.println("欢迎你"+name1);//因为name1是非静态成员变量,所以会报错
System.ou.println("欢迎你"+name2);//name2为静态变量,不会报错,正常运行。
}
}
如果想在静态方法中调用非静态成员变量,可以通过创建类的对象,然后通过对象来访问。
//在静态方法中调用非静态成员变量
public static void print(){
//创建类的对象
Hello hello = new Hello();
//通过对象来实现在静态方法中调用非静态变量
System.out.print("欢迎你"+hello.name1);
}
2,普通的成员方法可以直接访问静态变量和非静态变量
(延续上面定义的name1和name2)
Public void show(){
System.out.println("欢迎你"+name1);
System.out.println("欢迎你"+name2);
//因为这是一个普通方法,所以两句话均能执行,不会报错
}
3,静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
//普通成员方法
public void show(){
System.out.println("welcome to my blog");
}
//静态方法
public static void print(){
System.out.println("欢迎来到我的博客");
}
public static main (String[ ] args){
//普通成员方法必须通过对象调用
Hello hello = new Hello();
hello.show();
//静态方法可以直接调用
print();
}