C++中的static
在c++的语法中,与static变量(静态变量)相对应的是auto变量(自动变量)
在实际运用当中,一般不会用到自动变量显示说明。
auto double num ;
double num ;
以上语句实际作用效果相等。
静态变量作用范围在一个文件内,程序开始执行时分配空间,结束时释放空间。静态变量和静态函数在其他文件内是不可见的。
static变量在第一次使用时进行初始化,默认初始化为0,函数退出时,系统仍保存着static变量的空间和存储内容。下一次访问这个静态变量的时候它保持着上一次更改的内容。
#include<iostream>
using namespace std;
void func();
void main(){
func();
func();
}
void func(){
int a=1;
static int b=1;
cout<<"a="<<a<<"\tb="<<b<<endl;
a++;
b++;
}
java中的static
需要注意的是,java中的static关键字与C++中的功能是有差别的。
用static声明的变量是类变量,用static声明的方法是类方法。(非static声明的分别是实例变量和实例方法)
java中的类变量与C++中的静态变量有一样的存储特性,当一个类变量被多个对象共享时,任何一个对象改变了类变量的值都会作用于所有对象。当程序退出时,类变量释放所占的内存。
public class teamp {
static int b=1;
public static void main(String[] args) {
fun();
fun();
}
static void fun(){
int a=1;
System.out.print("a="+a+"\t");
System.out.println("b="+b);
a++;
b++;
}
}
另外,类变量不仅可以通过对象访问也可以直接通过类名访问。
同样的,类方法可以通过对象调用,也可以直接通过类名调用。需要注意类方法不可以操作实例变量和实例方法,实例方法可以调用类方法,这是因为在类对象创建之前,实例成员还未分配内存。
来源:CSDN
作者:OMC_1
链接:https://blog.csdn.net/qq_43443162/article/details/104169633