前面提到过“数据类型 变量名 = 初始值;”可以申明一个变量,今天就谈谈变量的作用域。
Java中变量分两种:局部变量和全局变量。
变量的作用域是一种相对概念,在”.java”源文件中,包含于方法体中的变量即为局部变量,方法体之外类内部的变量即为全局变量,使用static关键字后,升格为静态局部变量和静态全局变量。
先介绍一个概念,静态存储方式和动态存储方式。静态变量采用的是静态存储方式,但不是采用静态存储方式的变量就是静态变量,静态变量和非静态变量以static为分界线,这其中全局变量也采用的是静态存储方式。那什么是静态存储方式和动态存储方式呢?
采用静态存储方式的变量,在申明时就已经在内存当中分配到了固定的存储空间,并保持数据更新。而采用动态存储方式的变量,只在程序执行到它时才分配存储空间,不再用到它时便被释放内存。静态变量会一直存在,直到整个程序结束执行。
静态局部变量的作用与和局部变量的作用域相同,二者只是采取的存储方式的不同,静态全局变量和全局变量的作用域相同,两者都保持数据更新,直到整个程序完成运行。在静态方法中使用全局变量时,原先的全局变量需要定义为静态全局变量,进而实现同类调用,也就是静态成员不能调用非静态成员。