先看代码:
package lession1;
import java.io.IOException;
public class HelloWorld {
private static int a = 10;
private int b;
public static void main(String[] args) throws IOException,Exception
{
//静态变量或方法可直接调用
hello1();
System.out.println(a);
//静态变量或方法也可以通过类名.成员名调用
HelloWorld.hello1();
System.out.println(HelloWorld.a);
//非静态方法必须通过类的实例来调用
HelloWorld helloWorld = new HelloWorld();
helloWorld.hello2();
//非静态变量必须通过类的实例来调用
System.out.println(helloWorld.b);
}
//静态方法hello1
//静态方法内可以调用非静态方法
public static void hello1()
{
System.out.println("Hello World! -1");
}
//非静态方法hello2
//非静态方法内也可以调用静态方法
public void hello2()
{
System.out.println("Hello World! -2");
}
}
输出结果:
Hello World! -1
10
Hello World! -1
10
Hello World! -2
0
总结:
1.静态变量或方法可直接调用
方式一:
staticMethodName();
方式二:
ClassName.staticMethodName();
2.非静态方法必须通过类的实例来调用
步骤一:
定义一个类的实例
HelloWorld helloWorld = new HelloWorld();
步骤二:
通过实例调用
helloWorld.hello2();
注:如果把hello2方法定义为static,则会出现warnings如下:
the static method hello2() from the type HelloWorld should be accessed in a static way.
如果用实例的方式去调用静态变量a,则会出现warnings如下:
the static field a should be accessed in a static way.