static 关键字

一曲冷凌霜 提交于 2020-02-05 03:50:23

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++;
    }
}

在这里插入图片描述
另外,类变量不仅可以通过对象访问也可以直接通过类名访问。

同样的,类方法可以通过对象调用,也可以直接通过类名调用。需要注意类方法不可以操作实例变量和实例方法,实例方法可以调用类方法,这是因为在类对象创建之前,实例成员还未分配内存。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!