1、与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。静态方法的使用如:
public class HelloWorld {
/**
* @param args
*/
//使用static关键字声明静态方法
public static void print(){
System.out.println("myHelloWorld");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//直接使用类名调用静态方法
HelloWorld.print();
//也可以通过对象名调用,当然更推荐使用类名调用的方式
HelloWorld demo = new HelloWorld();
demo.print();
}
}
运行结果如下:
myHelloWorld
myHelloWorld
2、注意点:
(1)静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员,如下静态方法print()中可以自己调用Sworld,但不能自己调用world。
(2)如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如下可以在print方法中创建HelloWorld对象,即可用对象名.world访问非静态变量world
public class StaticMethod2 {
/**
* @param args
*/
String world = "myworld";//非静态变量world
static String Sworld = "ourWorld";//静态变量Sworld
public static void print() {
//System.out.println("world:"+world);//不能自己调用非静态变量
System.out.println("world:"+Sworld);//可以自己调用静态变量
}
// public static void print() {
// //创建类的对象
// StaticMethod2 method2 = new StaticMethod2();
// //通过对象来实现在静态方法中调用非静态变量
// System.out.println("world:"+method2.world);
// System.out.println("world:"+Sworld);
//
// }
}
(3) 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下
public class HelloWorld {
/**
* @param args
*/
String world = "myworld";//非静态变量world
static String Sworld = "ourWorld";//静态变量Sworld
public void print() {
// TODO Auto-generated method stub
//普通成员方法可以自己访问非静态变量和静态变量
System.out.println("world:"+world);
System.out.println("world:"+Sworld);
}
}
(4)静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:
public class HelloWorld {
/**
* @param args
*/
//普通成员方法
public void show(){
System.out.println("myshow");
}
//静态方法
public static void print(){
System.out.println("myprint");
}
public static void main(String[] args) {
//普通成员方法必须通过对象来调用
HelloWorld helloWorld = new HelloWorld();
helloWorld.show();
//可以自己调用静态方法
print();
}
}