Java中的static关键字与静态初始化

需积分: 9 1 下载量 145 浏览量 更新于2024-08-18 收藏 1.26MB PPT 举报
"Java基础-静态初始化和相关概念" 在Java编程中,`static`关键字是一个非常重要的修饰符,它允许我们定义类级别的变量、方法和块,这些元素不依赖于类的实例即可访问。在给定的例子中,`static`关键字被用来初始化类变量`Person.total`。 例子分析: ```java class Person { public static int total; static { total = 100; System.out.println("in static block!"); } } public class Test { public static void main(String[] args) { System.out.println("total = " + Person.total); System.out.println("total = " + Person.total); } } ``` 在这个例子中,`Person`类有一个静态变量`total`,在类加载时,与其关联的静态初始化块被执行,将`total`设置为100,并打印出`in static block!`。在`Test`类的`main`方法中,我们可以通过类名直接访问`total`,无需创建`Person`类的实例。两次输出`total`的值都是100,因为静态变量是所有类实例共享的,它们在内存中只有一个副本。 **static关键字的用途**: 1. **静态属性(类变量)**:如`Person.total`,它们在类加载时被初始化,并且是所有类实例共享的。这意味着修改一个实例的静态变量会影响到其他实例。 2. **静态初始化块**:这是类加载时执行的一段代码,通常用来初始化静态变量。在上述例子中,`total`的初始化就发生在静态块内。 3. **静态方法**:静态方法与类相关联,而不是类的任何实例。它们不能访问非静态变量,因为非静态变量是每个实例特有的。例如,计算圆面积的方法可以是静态的,因为它不依赖于特定的圆实例。 4. **单子模式**:`static`关键字在实现单例设计模式时也很常见,确保类只有一个实例存在。 5. **main方法**:程序的入口点`main`方法就是静态的,这允许我们在没有创建任何对象的情况下启动程序。 **final关键字**:`final`关键字用于声明不可改变的变量或方法,一旦赋值后就不能再更改。 **抽象类(abstract关键字)**:抽象类不能被实例化,它们用于定义一个类的接口,但不提供具体实现。子类必须实现所有抽象方法才能成为可实例化的类。 **接口(interface关键字)**:接口是完全抽象的,包含常量和抽象方法,用于实现多继承和定义特定的行为规范。 **内部类**:内部类是嵌套在另一个类中的类,它可以访问外部类的所有成员,包括私有成员。 总结来说,`static`关键字是Java中一个核心的概念,它允许我们创建类级别的变量和方法,这些元素与类的实例无关,而是直接与类本身关联。了解并正确使用`static`关键字对于理解和编写高质量的Java代码至关重要。