首页 > 试题广场 >

说一说 static 关键字的作用

[问答题]
推荐

得分点

关键字、作用域、生命周期、共享数据

参考答案

标准回答

static 是一个关键字,可以用来修饰局部变量、全局变量、成员变量、函数和成员方法。主要作用有:限制数据的作用域、延长数据的生命周期、修饰成员可以被该类所有对象共享。

  1. 限制数据的作用域(隐藏)

    所有没有加 static 的全局变量和函数都具有全局可见性,其它源文件中也可以访问。被 static 修饰的全局变量和函数只能在当前源文件中访问,其它源文件访问不了,利用这个特性可以在不同的文件中定义同名变量和同名函数,而不必担心命名冲突。

  2. 延长数据的生命周期

    普通的局部变量出了作用域就会释放,而静态变量存储在静态区,知道程序运行结束才会释放。

  3. 静态成员被该类所有对象共享

    static 关键字可以修饰类中的成员变量和成员方法,被称为静态成员变量和静态成员方法,静态成员拥有一块单独的存储区,不管创建多少个该类的对象,所有对象都共享这一块内存。静态成员本质上属于类,可以通过类名直接访问。

加分回答

  1. 静态变量默认初始化值为0,如果没有显示初始化静态变量或者初始化为0的静态变量会存储在BSS段,而初显示初始化的静态变量存储在DATA段。
  2. 静态成员函数中不能访问普通的成员变量,只能访问静态成员变量,并且在静态成员函数中没有 this 指针。
编辑于 2021-09-15 11:09:01 回复(0)
a.静态变量:
i.存储在静态存储区;
ii.在程序运行化时仅初始化一次,在程序退出时才销毁;
iii.受作用域限制,离开作用域后无法访问,但是不被销毁。
b.静态函数:
i.仅在声明它的源文件中可用,无法通过外部链接使用;
ii.将函数限定在当前源文件中,避免与其他文件中的同名函数造成冲突。
c.静态类成员:
i.属于类的属性或方法,不属于类的实例;
ii.所有的类实例共享同一份静态成员数据;
iii.静态成员函数只能访问静态成员变量或其他静态成员函数;
d.静态全局变量:
i.限定作用域在当前文件中;
仅在程序启动时初始化,在程序结束时销毁。
编辑于 2024-03-02 23:31:02 回复(0)
静态变量,静态方法,静态代码块,内部类
发表于 2023-09-17 19:30:18 回复(0)

static

  • 不考虑类的情况
    • 隐藏。所有不加static的全局变量和函数具有全局可见性,可以在其他文件中使用,加了之后只能在该文件所在的编译模块中使用
    • 默认初始化为0,包括未初始化的全局静态变量与局部静态变量,都存在全局未初始化区
    • 静态变量在函数内定义,始终存在,且只进行一次初始化,具有记忆性,其作用范围与局部变量相同,函数退出后仍然存在,但不能使用
  • 考虑类的情况
    • static成员变量:只与类关联,不与类的对象关联。定义时要分配空间,不能在类声明中初始化,必须在类定义体外部初始化,初始化时不需要标示为static;可以被非static成员函数任意访问。
    • static成员函数:不具有this指针,无法访问类对象的非static成员变量和非static成员函数;不能被声明为const、虚函数和volatile;可以被非static成员函数任意访问
发表于 2023-08-02 22:58:35 回复(0)
static 关键字主要有两种作用:第一,为某特定数据类型或对象分配单一的存储空间,而
与创建对象的个数无关。第二,实现某个方法或属性与类而不是对象关联在一起,也就是说,
在不创建对象的情况下就可以通过类来直接调用方法或使用类的属性。具体而言,在 Java语
言中,static 主要有 4 种使用情况:成员变量、成员方法、代码块和内部类。
————————————————
版权声明:本文为CSDN博主「纳什1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_65562481/article/details/124627565
发表于 2023-04-19 16:47:37 回复(0)