首页 百科知识 java有静态局部变量吗

java有静态局部变量吗

时间:2022-10-17 百科知识 版权反馈
【摘要】:静态局部变量的作用域同自动变量,即为所在的函数,两者不同处在于,函数调用结束后,自动变量的值被释放,而静态局部变量的值将被保留。变量c被定义为全局变量,其作用域为整个程序,test()函数中c的变化必然影响main()函数c的变化。

7.4.1 静态局部变量

函数内定义的静态变量为静态局部变量,例如:

static int a,b;

static float x,y;

说明:

静态局部变量的作用域同自动变量,即为所在的函数,两者不同处在于,函数调用结束后,自动变量的值被释放,而静态局部变量的值将被保留。

例7-7 使用静态局部变量计算1~6的阶乘。

img592

img593

运行结果如图7.4.1所示。

img594

图7.4.1 静态局部变量的使用

说明:

在fact()函数中将f变量定义为静态局部变量,每次调用结束后f变量将保留上次计算的阶乘值,上次阶乘值乘以i,即为i!。

例7-8 本例仅示意性说明全局变量、自动变量和静态局部变量的使用。

img595

运行结果如图7.4.2所示。

img596

图7.4.2 全局变量、静态变量和自动变量的使用

说明:

在main()和test()函数中都使用了变量a、b和c,虽然同名,但分属于不同的函数。在test()函数中,a和b的变化不会影响main()函数中的同名变量。变量c被定义为全局变量,其作用域为整个程序,test()函数中c的变化必然影响main()函数c的变化。另外,在test()函数中,a被说明为静态局部变量,其值在函数每次调用结束后被保留,而b为自动变量,函数每次调用结束后被释放,再次调用时被重新初始化为0。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈