应用场景—代码解释:
1.静态变量
静态变量也称为类变量。它们不属于任何一个特定的对象实例,而是属于类本身。这意味着静态变量是类的所有实例共享的。无论创建多少个类的实例,都只有一个静态变量的副本。
public class MyClass { static int staticVariable = 10; } // 使用静态变量 MyClass instance1 = new MyClass(); MyClass instance2 = new MyClass(); System.out.println(instance1.staticVariable); // 输出 10 System.out.println(instance2.staticVariable); // 输出 10 instance1.staticVariable = 20; System.out.println(instance2.staticVariable); // 输出 20,因为静态变量是共享的
2.静态方法
静态方法属于类而不是类的实例。因此,你可以在不创建类实例的情况下调用静态方法。静态方法只能访问静态变量和其他静态方法,因为它们不需要类的实例。
public class MyClass { static void staticMethod() { System.out.println("This is a static method."); } } // 调用静态方法 MyClass.staticMethod(); // 输出 "This is a static method."
3.静态代码块
静态代码块是在类加载时执行的代码块。静态代码块常用于初始化静态变量。静态代码块只执行一次,即使创建多个类的实例。
public class MyClass { static int staticVariable; static { staticVariable = 42; // 静态变量初始化 System.out.println("Static block executed."); } public static void main(String[] args) { MyClass instance1 = new MyClass(); MyClass instance2 = new MyClass(); //只一次输出 "Static block executed." 因为静态代码块只执行一次 } }
4.静态导入
从 Java 5 开始,可以使用静态导入来直接访问静态成员(方法和变量),而无需在每次引用时都使用类名作为前缀。
import static java.lang.Math.PI; import static java.lang.Math.sin; public class Main { public static void main(String[] args) { double radius = 2.0; double area = PI * radius * radius; double circumference = 2 * PI * radius; System.out.println("Area: " + area); System.out.println("Circumference: " + circumference); System.out.println("sin(PI/2): " + sin(PI / 2)); // 直接使用 sin,而不是 Math.sin } }
5.静态内部类
静态内部类(也称为嵌套类)是定义在另一个类内部的类,但它不需要外部类的实例即可创建对象。静态内部类可以使用外部类的静态成员,但不能使用非静态成员,除非通过外部类的实例来访问。
public class OuterClass { static int outerStaticVar = 100; class InnerClass { void show() { System.out.println("Inner class showing outer staticvariable: " + outerStaticVar); } } static class StaticInnerClass { void display() { System.out.println("Static inner class can access outer static variables."); } } public static void main(String[] args) { OuterClass.StaticInnerClass staticInner = new OuterClass.StaticInnerClass(); staticInner.display(); // 输出 "Static inner class can access outer static variables." } }
总结来说,static
关键字在 Java 中用于定义不依赖于对象实例的变量、方法和代码块。它们属于类本身,并可以在没有创建对象的情况下访问。静态成员常用于工具类、单例模式、常量定义等场景。