本文目录导读:

在Java中,静态变量(也称为类变量)可以通过两种方式调用:类名直接调用 或 对象调用(但不推荐),下面是详细的案例说明。
静态变量的定义
public class Student {
// 静态变量(类变量)
public static String schoolName = "清华大学";
public static int studentCount = 0;
// 实例变量
private String name;
private int age;
// 构造方法
public Student(String name, int age) {
this.name = name;
this.age = age;
studentCount++; // 每创建一个对象,学生总数+1
}
// 静态方法
public static void showSchool() {
System.out.println("学校名称:" + schoolName);
}
}
调用静态变量的方式
通过类名直接调用(推荐)
public class Test {
public static void main(String[] args) {
// 通过类名直接访问静态变量
System.out.println(Student.schoolName); // 输出:清华大学
System.out.println(Student.studentCount); // 输出:0
// 修改静态变量
Student.schoolName = "北京大学";
System.out.println(Student.schoolName); // 输出:北京大学
}
}
通过对象调用(不推荐,会有警告)
public class Test {
public static void main(String[] args) {
Student stu1 = new Student("张三", 20);
// 通过对象访问静态变量(不推荐)
System.out.println(stu1.schoolName); // 输出:清华大学(有警告)
System.out.println(stu1.studentCount); // 输出:1
// 通过类名访问更清晰
System.out.println(Student.schoolName); // 推荐方式
}
}
完整案例:学生统计
public class StudentManager {
// 静态变量
public static int totalStudents = 0; // 学生总数
public static final String SCHOOL = "清华大学"; // 常量
// 实例变量
private String name;
private int id;
public StudentManager(String name) {
this.name = name;
totalStudents++;
this.id = totalStudents;
}
public void showInfo() {
System.out.println("学号:" + id + ",姓名:" + name +
",学校:" + SCHOOL);
}
// 静态方法
public static void showTotal() {
// 访问静态变量
System.out.println("当前学生总数:" + totalStudents);
System.out.println("学校名称:" + SCHOOL);
// System.out.println(name); // 错误!静态方法不能直接访问实例变量
}
public static void main(String[] args) {
// 调用静态方法
StudentManager.showTotal(); // 输出:当前学生总数:0
// 创建学生对象
StudentManager stu1 = new StudentManager("张三");
StudentManager stu2 = new StudentManager("李四");
StudentManager stu3 = new StudentManager("王五");
stu1.showInfo(); // 学号:1,姓名:张三,学校:清华大学
stu2.showInfo(); // 学号:2,姓名:李四,学校:清华大学
stu3.showInfo(); // 学号:3,姓名:王五,学校:清华大学
// 使用类名调用静态变量和方法
System.out.println("学生总数:" + StudentManager.totalStudents); // 3
StudentManager.showTotal(); // 当前学生总数:3
}
}
静态变量的特点
public class StaticFeatures {
// 静态变量在类加载时初始化
public static int count = 0;
// 静态代码块(类加载时执行一次)
static {
count = 10;
System.out.println("静态代码块执行,count = " + count);
}
public static void main(String[] args) {
// 所有对象共享同一个静态变量
StaticFeatures obj1 = new StaticFeatures();
StaticFeatures obj2 = new StaticFeatures();
obj1.count = 100;
System.out.println(obj1.count); // 100
System.out.println(obj2.count); // 100(共享同一个变量)
System.out.println(StaticFeatures.count); // 100(推荐方式)
}
}
注意事项
- 推荐使用类名调用:
ClassName.staticVariable - 静态变量属于类,所有对象共享
- 静态方法中不能直接访问非静态成员
- 静态变量在类加载时初始化,优先于对象创建
- 可以用final修饰静态变量:
public static final String PI = "3.14159";(常量)
通过以上案例,你应该能清楚地了解如何在Java中调用静态变量了,核心原则就是:使用类名直接调用,这样可以清晰地表明这是一个静态变量。