变量就是在程序的运行过程中数值可变的数据,用来记录运算中间结果或保存数据。程序会为变量在内存中开辟一个存储区域,该区域有自己的名称(变量名),类型(数据类型),该区域的数据可以在同一数据类型的范围内不断变化值。
(1)变量声明格式
数据类型 变量名1,变量名2,......,变量n;//或数据类型 变量名=初始化值;
(2)Java语言支持的变量类型
类变量:独立于方法之外的变量,用static修饰。
实例变量:独立于方法之外的变量,没有static修饰。
局部变量:类的方法中的变量。
局部变量,也称内部变量,是指在一个函数内部或复合语句内部定义的变量。
局部变量的生存期:从函数被调用的时刻算起到函数返回调用处的时刻结束。
局部变量的作用域是定义该变量的函数或定义该变量的复合语句。也就是说,局部变量只在定义它的函数或
复合语句范围内有效,只能在定义它的函数或复合语句内才能使用它们。关于局部变量的作用域还要说明以
下几点:
1、主函数main()中定义的变量也只在主函数中有效,而不能因为在主函数中定义在整个文件或程序中有
效。主函数也不能使用其他函数中定义的变量。因为主函数也是一个函数,它与其他函数是平行关系。这
一点是与其他语言不同的,应予以注意。
2、不同函数中可以使用相同名字的变量,它们代表不同的对象,分配不同的单元,互不干扰。例如,上面
在f1函数中定义了变量b和c,倘若在f2函数中也定义变量b和c,它们在内存中占不同的单元,互不干扰。
3、形式参数是属于被调函数的局部变量。例如上面f1函数中的形参a,也只在f1函数中有效,其他函数可
以调用f1函数,但不能引用f1函数中的形参a。
4、在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为
“分程序”或“程序块”。
Java中局部变量使用注意事项:
【1】局部变量在方法,构造方法或者语句块中声明。
【2】局部变量在方法,构造方法或者语句块被执行的时候创建,当他们执行完成后,变量将会被销毁。
【3】访问修饰符不能用于局部变量。
【4】局部变量只在自己声明的方法,构造方法或者语句块中可见。
【5】局部变量是在栈上分配的。
【6】局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才能使用。
全局变量也称外部变量,它是在函数外部定义的变量。它不属于哪一个函数,而是属于一个源程序文件:
其作用域是整个源程序。
几乎程序中的所有函数都能使用全局变量,客观上全局变量就起到了在函数间传递数据的作用,甚至可以
减少形参和实参的数量。当然在享用它的好处时,也要慎重,避免全局变量过多带来的降低函数通用性及
存储空间的浪费。
对于全局变量还有以下几点说明:
1、全局变量从程序运行起即占据内存,在程序整个运行过程中可随时访问,程序退出时释放内存。与之对
应的局部变量在进入语句块时获得内存,仅能由语句块内的语句访问,退出语句块时释放内存,不再有效。
2、局部变量定义后不会自动初始化,除非程序员指定初值。全局变量在程序员不指定初值的情况下自动初
始化为零。
3、在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。
//Example2_3.java
package Chapter2;
public class Test{public void pupAge() {int age = 0;age = age + 7;System.out.println("小狗的年龄是:" + age);}public static void main(String[] args){Test test=new Test();test.pupAge();}
}
代码中,age是一个局部变量,定义在pupAge()方法中,它的作用域就限制在这个方法中。
作用域在许多程序设计语言中非常重要。
通常来说,一段程序代码中所用到的名字并不总是有效的,而限定这个名字的可用性的代码范围就是这个
名字的作用域。
作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。
对于对象而言(其他也是一样的),在main函数中,对象的作用域为他所在的最近的一对花括号内。在后
花括号处析构函数被调用;全局的对象的作用域为声明之后的整个文件,析构函数在最后被调用。另外,
临时产生的对象在使用完后立即会被析构。
代码中package Chapter2;
如果直接用 javac 文件名.java 生成 文件名.class 文件会出现这种情况要通过javac –d . 文件名.java 来生成package目录。
生成 文件名.class 文件后
命令:java 包名.类名
即