为什么要有static
时间: 2023-11-12 13:06:23 浏览: 51
static 在不同的上下文中有不同的含义和用途。
在函数内部,static 可以用来声明静态局部变量。静态局部变量的生命周期不会随着函数的结束而结束,而是会一直存在直到程序结束。这样可以在多次调用同一个函数时保持变量的值不变,或者在递归调用时避免重复创建变量。
在全局变量中,static 可以用来声明静态全局变量。静态全局变量的作用域仅限于当前文件,其他文件无法访问它们,这样可以防止变量被意外修改。
在类中,static 用来声明静态成员变量和静态成员函数。静态成员变量是与类相关联的变量,而不是与类的实例相关联的变量,因此可以被所有类的实例共享。静态成员函数与静态成员变量类似,它们也是与类相关联的,而不是与实例相关联的,因此可以在不创建类的实例的情况下调用。
总的来说,static 的作用是在不同的上下文中声明静态变量或函数,以便在程序执行过程中保持其状态或限制其作用域。
相关问题
ThreadLocal为什么要static修饰
ThreadLocal是Java中的一个线程局部变量类,它的作用是为每个线程提供一个独立的变量副本。在多线程环境下,每个线程都有自己的线程栈,如果不使用ThreadLocal,那么在多个线程之间共享变量时可能会出现数据错乱的问题。
在使用ThreadLocal时,一般会将其定义为static修饰的,这是因为ThreadLocal的实例是保存在各自线程的Thread对象中的,而static修饰的成员变量属于类级别,被所有实例共享。这样,通过将ThreadLocal定义为static,可以保证在不同的线程中都是使用同一个ThreadLocal实例。
如果不将ThreadLocal定义为static,那么每个实例都会有一个自己的ThreadLocal实例,这样就无法达到为每个线程提供独立副本的目的,而是每个实例都共享同一个副本,这就失去了使用ThreadLocal的意义。
总结来说,将ThreadLocal定义为static修饰是为了使得每个线程都可以使用同一个ThreadLocal实例,从而实现线程间的数据隔离。
为什么发明static
在C语言中,static是用来限定变量和函数的作用域的关键字。使用static关键字可以将变量和函数的作用域限定在当前文件内部,避免与其他文件中同名的变量或函数发生冲突。在函数内部使用static关键字定义的变量,会在程序运行时一直存在,不会像普通的局部变量那样在函数执行完毕后被销毁。这样可以在多次调用同一个函数时,保证变量的值不会被清除,从而实现变量的持久化。在C语言中,static还可以用来修饰全局变量,使其仅在当前文件内部可见,避免与其他文件中同名的全局变量发生冲突。