用 static 修饰
时间: 2023-11-08 20:06:07 浏览: 34
在Java中,static关键字用于修饰类的成员变量和成员方法,表示它们属于类级别,而不是实例级别。具体用途如下:
1. static成员变量
静态成员变量是类级别的变量,所有实例共享它,即修改它的值会影响所有实例。常用于记录类级别的信息,如计数器、常量等。
示例:
```
public class MyClass {
static int count = 0; // 静态成员变量
public MyClass() {
count++;
}
}
```
2. static成员方法
静态成员方法是类级别的方法,可以通过类名直接调用,无需创建实例。它只能访问静态成员变量和静态成员方法,不能访问实例级别的成员变量和成员方法。
示例:
```
public class MyClass {
static int add(int a, int b) { // 静态成员方法
return a + b;
}
}
```
调用方法:`int sum = MyClass.add(1, 2);`
3. static代码块
static代码块是在类初始化时执行的代码块,它可以用来初始化静态成员变量。它只会执行一次,即使创建多个实例也只会执行一次。
示例:
```
public class MyClass {
static int count;
static {
count = 0; // 初始化静态成员变量
}
}
```
相关问题
java类可以用static修饰吗
是的,Java类中的成员变量和成员方法都可以使用static修饰符进行修饰。当一个成员被声明为static时,它将与类的实例化对象无关,而与类本身相关联。这意味着无需创建类的实例即可访问static成员。
使用static修饰的成员变量被称为静态变量或类变量,它们在所有类的实例之间共享相同的值。可以通过类名直接访问静态变量,无需创建对象。
使用static修饰的成员方法被称为静态方法,它们不依赖于类的实例化对象,可以直接通过类名调用。静态方法通常用于实现与类本身相关的功能,而不依赖于特定的实例。
需要注意的是,静态成员不能直接访问非静态成员,因为非静态成员依赖于类的实例化对象。但非静态成员可以访问静态成员,因为静态成员在类加载时就已经存在了。
什么时候用static修饰成员函数
当一个成员函数不需要访问类的非静态成员,也不需要通过类的实例来调用时,可以使用static修饰该成员函数。静态成员函数是属于类本身的,而不是属于类的实例,因此可以直接通过类名来调用,而不需要先创建类的实例。
使用static修饰的成员函数可以直接访问和修改静态成员变量,但不能访问非静态成员变量。此外,静态成员函数无法调用非静态成员函数,因为非静态成员函数需要通过类的实例来调用。
使用static修饰成员函数有以下几个常见的应用场景:
1. 作为工具函数:不依赖于类的实例和非静态成员的函数,可以声明为静态成员函数,方便在类外部直接通过类名调用。
2. 统计类的实例个数:可以使用静态成员函数来统计类的实例个数,通过在构造函数和析构函数中更新静态成员变量来实现。
3. 计算与类相关的某些值:某些与类相关的计算,不需要依赖于类的实例和非静态成员,可以声明为静态成员函数。
4. 作为回调函数:当静态成员函数需要作为回调函数传递给其他函数或类时,可以使用static修饰。
需要注意的是,静态成员函数没有this指针,因此无法访问非静态成员变量和非静态成员函数。