



3.2 什么是量
9月10日,11:10,晴
我:“量是什么?”
KNOWALL:“量是用来传递数据的介质,它具有十分重要的作用。但是程序中的量既可以是变化的,也可以是固定不变的。所以量可以分为可以变的量和不可以变的量,可变的量叫做变量,不可变的量叫做常量。”
永远不变的量就是常量,其值不能改变,它们可以是不随时间变化的某些量和信息,也可以是表示某一数值的字符或字符串,在Java程序中,常量名常用大写字母表示,value是该数据合法的值,如下面的代码就是常量的格式:
下面通过一段代码进行讲解,其代码保存在【光盘:源代码/第3章/Test.java】中。首先定义4个类(类的具体知识将在本书后面的内容讲解),具体代码如下:
然后定义类Test,在其中定义两个String类型的常量并输出结果,代码如下:
KNOWALL:“在前面的类中都定义了常量,类X、类Y、类Z中的三个常量字符串属于不同的对象,用 = = 操作符比较,那么结果必然是false,其结果如图3-2所示。”
图3-2 常量
9月10日,11:20,晴
我:“常量是不会改变的量。”
KNOWALL:“人的理想随着年龄的增长而变化,小时候希望快快长大,长大后希望拥有完美的爱情……同样,数据也不是一成不变的,这就需要变量了!”
Java程序为了传递数据,它的量保持不变,为变而生的量叫做变量。在声明变量时都必须分配一个类型,不管在什么样的程序设计中都会提到,在程序运行过程中,空间内的值是变化的,这个内存空间就称为变量。为了操作方便,给这个空间取了一个名字,称为变量名,内存空间内的值就是变量值。所以,申请了内存空间后,变量不一定有值,要想变量有值,就必须要放入值,但申请变量时,不同的数据类型将会有一个默认值,如int的数据变量的默认值是“0”,char的数据类型的变量是null,byte的数据变量的默认值是“0”。
程序运行时,变量的基本格式与常量的基本格式不同,例如下面的代码:
参数介绍:
● typeSpencifier为Java中合法的数据类型,这和常量是一样的。
● varname为变量名,变量和常量的最大区别是value的值是可有可无的,而且还可以对其进行动态初始化。
变量分为局部变量和全局变量两种,其中全局变量也称为成员变量,全局变量通常被定义在一个类中,在所有的方法和函数之外;局部变量通常被定义在一个方法或者一个函数中。
局部变量,顾名思义,就是在一个方法块或者一个函数内起作用,超过这个范围时,它将没有任何作用。即变量在程序中是随时可以改变的,随时都在传递着数据。
测试1: 分别计算三角形、正方形和长方形的面积。
解决思路: 思路如下:
(1)定义类PassTest。
(2)分别定义变量并赋初始值。
(3)分别输出计算的三角形、正方形和长方形的面积。
编写实现文件的代码,保存在【光盘:源代码/第3章/ PassTest.java】中,具体代码如下:
将代码进行编译,得到如图3-3所示的结果。
图3-3 局部变量
明白了局部变量后,就不难理解全局变量了,其实它就是比局部变量的作用区域更大的变量。下面通过一个实例进行讲解。
测试2: 演示全局变量的应用。
KNOWALL:“听我的指挥,编写代码,先定义变量x,y,z,z1,a,b,c,d,e,将代码保存在【光盘:源代码/第3章/Quan.java】中。”
我:“……(其实此时我心里很不情愿!)”
KNOWALL:“然后设置z1的值,并分别输出x,y,z,a,b,c,d,e的值,具体代码如下。”
KNOWALL:“现在将代码进行编译,查看具体结果如何。”
将代码进行编译,运行得到如图3-4所示的结果。
图3-4 全局变量
我:“怎么会这样?”
KNOWALL:“在上述实例中,全局变量将对这个程序产生作用,但是局部可以随时更改这个变量的值。在上面的程序里,定义了两个z1,在局部中将重新定义了这个变量,在这个局部中,这个变量的值将会发生改变,运行上面的程序,在这里定义了byte变量‘x’、short变量‘y’、int变量‘z’和‘z1’、float变量‘b’、double变量‘c’、 char变量‘d’、Boolean变量‘e’,都未赋值,但是在执行的时候都出现了值,这说明,不管什么类型的变量,都有默认值,未给变量定义值,它将以默认值产生。”
我:“原来如此!”
KNOWALL:“通过上面的实例,相信你认识了全局变量。下面给出一个程序,读者指出局部变量,并指出它的作用域,其代码保存在【光盘:源代码/第3章/Quan1.php】中,下面开始讲解具体代码,先定义String并设置其值,代码如下。”
KNOWALL:“然后在主程序中分别进行如下处理。”
● 直接使用:类名.静态方法名。
● 通过对象t1改变static变量。
● 通过对象t2改变static变量。
● 直接通过“类名.静态变量”来存取。
对应代码如下:
KNOWALL:“此时将代码编译,运行得到如图3-5所示的结果。”
图3-5 全局变量