static变量和普通变量的区别

参考答案

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—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧