静态变量、方法
Java 中被 static 修饰的成员称为静态成员或类成员。 它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可使用类名直接访问,也可使用对象名进行访问。当然,鉴于它作用的特殊性更推荐用类名访问。
使用 static 可修饰变量、方法和代码块
与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。
- 静态方法中可直接调用同类中的静态成员,但不能直接调用非静态成员
java
public class HelloWorld {
String name = "imooc"; // 非静态变量name
static String hobby = "imooc"; // 静态变量hobby
// 在静态方法调用非静态变量
public static void print() {
System.out.println(name); // 不能直接调用 非静态变量
System.out.println(hobby); // 可以直接调用 静态变量
}
}如果希望在静态方法中调用非静态变量,可通过创建类的对象,然后通过对象来访问非静态变量。
java
public class HelloWorld {
String name = "imooc"; // 非静态变量name
static String hobby = "imooc"; // 静态变量hobby
public static void print() {
// 创建类的对象
HelloWorld hello = new HelloWorld();
// 通过对象来实现静态方法中调用非静态变量
System.out.println(Hello.name);
System.out.println(hobby);
}
}- 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
java
public class HelloWorld {
String name = "imooc"; // 非静态变量name
static String hobby = "imooc"; // 静态变量hobby
// 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
public void show() {
System.out.println(name);
System.out.println(hobby);
}
}- 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法
java
public class HelloWorld {
String name = "imooc"; // 非静态变量name
static String hobby = "imooc"; // 静态变量hobby
public static void main(String[] args) {
// 普通成员方法必须通过对象来调用
HelloWorld hello = new HelloWorld();
hello.show();
// 可以直接调用静态方法
print();
}
// 普通成员方法
public void show() {
System.out.println("Hello");
}
// 静态方法
public static void print() {
System.out.println(hobby)
}
}