Java中static变量的初始化与面向对象理解

需积分: 12 1 下载量 46 浏览量 更新于2024-08-18 收藏 772KB PPT 举报
在Java面向对象编程中,"static变量的初始化"是一个关键概念,它涉及到类的静态成员和实例成员的理解。在Java中,静态变量(也称为类变量)与类关联,而不是与类的任何特定实例。当你在类中声明一个变量为static,它的生命周期贯穿于类的整个运行期间,无论创建了多少个类的实例。 在给定的示例中,`Smember`类有两个静态变量`i`和`b`,以及一个实例变量`c`。在传统的类定义中,如: ```java class Smember { static int i = 100; static boolean b = true; char c = 't'; public Smember() {} public static void main(String args[]) { Smember m1 = new Smember(); Smember m2 = new Smember(); } } ``` 静态变量`i`和`b`在类加载时就会被初始化为100和true,即使在`main`方法中创建了多个`Smember`对象(如`m1`和`m2`),它们共享同一份静态变量的副本,意味着对这些变量的修改会影响到所有对象。 另一种情况是,如果静态变量在类的内部有一个静态块(`static {...}`),例如: ```java class Smember { static int i; static boolean b; static { i = 100; b = true; System.out.println("In static block"); } char c = 't'; public Smember() { System.out.println("In constructor"); } public static void main(String args[]) { Smember m1 = new Smember(); Smember m2 = new Smember(); } } ``` 在这里,静态块会在类加载时执行一次,打印出"In static block",在构造函数`Smember()`执行前,确保了静态变量的初始化。这意味着每个对象在其创建时,会看到静态变量已经设置好初始值。 在面向对象编程的基本概念中,对象是核心概念之一,它是程序中的实体,代表现实世界中的某个事物。类是对象的蓝图,定义了一组属性(状态)和行为(方法)。封装性、继承性和多态性是面向对象的三大特性,封装保证了数据的安全性和可维护性,继承使得子类可以重用父类的代码,而多态则允许同一种行为表现出不同的形式。 理解这些概念对于编写高效、易于维护的Java程序至关重要。通过合理利用静态变量和面向对象特性,你可以创建出模块化的代码结构,使得程序逻辑更清晰,复用性更强。