参考答案
1. static局部变量与普通局部变量的区别
1.1 相同点
都是局部变量,在函数内部定义,仅能被该模块内部的语句所访问。
1.2 不同点
1.2.1 内存分配与释放
- static修饰的局部变量在内存中存放在静态存储区,static修饰的局部变量只有在整个程序结束的时候才会自动释放。若下次调用该局部变量所在的函数时,不需要对它重新声明,且会保留上一次调用存入的值。
- 普通局部变量存放在堆栈区,动态分配,其离开作用域‘{}’后,就会自动销毁,释放内存空间,无法再次使用此变量。
- static局部变量在编译阶段,函数还未执行的时候,就已经分配了变量空间。
- 普通局部变量只有在执行到定义变量的语句时,才会分配内存空间。
1.2.2 初始化
- static局部变量不初始化时,默认值为0;
- 普通局部变量不初始化时,默认值为随机值。
2. static全局变量与普通全局变量的区别
2.1 相同点
在存储方式上,两者都是静态存储.
2.2 不同点
- 非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。
- 静态全局变量则限制了其作用域, 只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此,能避免在其它源文件中引起错误。
以上,是Java面试题【static量和普通变量的区别】的参考答案。
输出,是最好的学习方法。
立即行动,在评论区记录下你的问题、笔记或补充~
—end—