与静态变量一致,我们也可以使用static修饰方法,成为静态方法或类方法,常用的main方法就是静态方法。
1、静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:
package com.yiibai;
public class HelloWorld {
static String address="北京"; //address是静态变量
String name="tom"; //name 为非静态变量
public static void travel(){
System.out.println("他的名字叫"+name); //不能直接调用非静态变量
System.out.println("他来自"+address); //可以直接调用静态变量
}
}
如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:
package com.yiibai;
public class HelloWorld {
static String address="北京"; //address是静态变量
String name="tom"; //name 为非静态变量
public static void travel(){
HelloWorld hello=new HelloWorld(); //创建对象来调用非静态变量
System.out.println("他的名字叫"+hello.name); //不能直接调用非静态变量
System.out.println("他来自"+address); //可以直接调用静态变量
}
}
2、在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示
package com.yiibai;
public class HelloWorld {
static String address="北京"; //address是静态变量
String name="tom"; //name 为非静态变量
/**
* 普通方法可以直接调用静态方法和非静态方法
*/
public void eat(){
System.out.println("他的名字叫"+name); //可以直接调用非静态变量
System.out.println("他来自"+address); //可以直接调用静态变量
}
}
3、静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:
public class HelloChina {
/**
* 普通成员方法
*/
public void eat(){
System.out.println("吃东西");
}
/**
* 静态方法
*/
public static void travel(){
System.out.println("去旅游");
}
public static void main(String[] args){
//普通成员方法必须通过对象来调用
HelloChina chinan=new HelloChina();
chinan.eat();
//可以直接调用静态方法
travel();
}
}