static修饰的变量特点
时间: 2023-08-08 18:11:35 浏览: 59
静态修饰的变量具有以下特点:
1. 在类加载时即被初始化,可以直接通过类名.变量名进行调用。
2. 静态变量在类加载时会被分配到数据区的方法区,类的实例可以共享方法区中的变量。
3. 如果静态变量发生改变,所有类实例引用的变量都会一起发生改变。
4. 静态方法中不能使用this或super,因为静态方法属于类的方法,而this或super只是对象的方法。
5. 静态方法不能引用非静态修饰的变量,因为在类加载过程中,静态方法加载完成时,非静态修饰的变量还未加载,所以无法引用非静态修饰的变量。
6. 非静态修饰的方法可以引用静态修饰的变量,因为在类加载过程中,静态修饰的变量优先完成加载,所以当非静态修饰的方法完成加载后可以引用静态修饰的变量。[1]
相关问题
static修饰局部变量的特点
静态变量是在程序的整个运行期间都存在的变量,其生命周期与程序一致。而局部变量是在函数或代码块执行时创建的,函数或代码块结束后被销毁。
因此,使用static修饰局部变量可以改变其生命周期,使其在函数或代码块结束后不被销毁,而是保留其值,下次调用时可以继续使用。这种特性可以实现静态变量的功能,即在程序的整个运行期间都只有一个变量实例,可以在多个函数或代码块中共享使用。
需要注意的是,使用static修饰局部变量后,其作用域仅限于当前函数或代码块,无法在其他函数或代码块中访问。同时,静态局部变量的初始值只会被赋值一次,之后每次调用时都会使用上一次的值。
static修饰全局变量
`static` 关键字在 C 语言中有多种用法,其中之一是用来修饰全局变量。当 `static` 用于全局变量时,它改变了该变量的链接属性和作用域。
1. 链接属性:普通的全局变量具有外部链接属性,这意味着它们可以在其他文件中被访问。而被 `static` 修饰的全局变量具有内部链接属性,只能在定义它的文件中访问。
2. 作用域:普通的全局变量的作用域是整个程序,而 `static` 修饰的全局变量的作用域仅限于定义它的文件。
下面是一个示例:
```c
#include <stdio.h>
// 普通的全局变量
int globalVariable1 = 10;
// 使用 static 修饰的全局变量
static int globalVariable2 = 20;
int main()
{
printf("globalVariable1: %d\n", globalVariable1);
printf("globalVariable2: %d\n", globalVariable2);
return 0;
}
```
在上面的示例中,`globalVariable1` 是一个普通的全局变量,可以在其他文件中访问。而 `globalVariable2` 是使用 `static` 修饰的全局变量,只能在当前文件中访问。
使用 `static` 修饰全局变量的好处是可以限制其作用域,避免与其他文件中同名的全局变量冲突。此外,在一些特定的情况下,使用 `static` 修饰的全局变量也可以提高代码的性能和安全性。但需要注意的是,由于 `static` 修饰的全局变量只能在定义它的文件中访问,可能会增加代码的耦合性,所以在使用时需要谨慎。