大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: 变 数、常量

数据是储存在内存中的一块空间中,为了取得数据,您必须知道这块内存空间的位置,然而若使用内存位址编号的话相当的不方便,所以使用一个明确的名称 代表储存在内存中的数据,变量(Variable)是一个指向数据储存空间的引用,您将数据指定给变量,就是将数据储存至对应的内存空间,调用变量, 就是调用对应的内存空间的数据供您使用。

在Java中要使用变量,必须先声明变量名称与数据类型,例如:
int intNum;         // 声明一个整数变量
double dblNum;   // 声明一个双精度浮点数变量

就如上面所举的例子,我们使用int、float、double、char等关键字 (Keyword)来声明变量名称并指定其数据类型,变量在命名时有一些规则,它不可以使用数字作为开头,也不可以使用一些特殊字节,像是 *&^%之类的字节,而变量名称不可以与Java 内定的关键字同名,例如int、float、class等等。

变量的命名有几个风格,主要以清楚易懂为主,初学者为了方便,当使用一些简单的字母来作为变量名称,这会造成日后程序维护的困难,命名变量时发生同名的情 况也会增加。

在过去曾流行过匈牙利命名法,也就是在变量名称前加上变量的数据类型名称缩写,例如intNum用来表示这个变量是int整数数据类型,fltNum表示 一个float数据类型,然而随着现在程序的发展规模越来越大,这种命名方式已经不被鼓励。

过去的程序在撰写时,变量名称的长度会有所限制,但现在已无这种困扰,因而现在比较鼓励用清楚的名称来表明变量作用,通常会以小写字母作为开始,并在每个 单字开始时第一个字母使用大写,例如:
int ageForStudent;
int ageForTeacher;

像这样的名称可以让人一眼就看出这个变量的作用,这样的命名方式,在Java程序设计领域中是最常看到的一种。

变量名称可以使用底线作为开始,通常使用底线作为开始的变量名称,表示它是私用的 (Private),只在程序的某个范围使用,外界并不需要知道有这个变量的存在,通常这样的变量名称常用于对象导向程序设计中类的私有成员(Private member),这样的命名方式在Java中偶而也 会看到(比较常见于C++的程序撰写中),一个声明的例子如下:
double _window_center_x;
double _window_center_y;
 
当您在Java中声明一个变量,就会配置一块内存空间给它,这块空间中原先可能就有数据,也因此变量在声明后的值是不可预期的,Java对于安全性的要 求极高,您不可以声明变量后,而在未指定任何值给它之前就使用它,编译器在编译时会回报这个错误,例如若声明变量var却没有指定值给它,则会显示以下讯 息:
variable var might not have been initialized

可以的话,尽量在变量声明后初始其值,您可以使用“指定运算符” (Assignment operator)=来指定变量的值,例如:
int ageForStudent = 0;
double scoreForStudent = 0.0;
char levelForStudent = 'A';

上面这段程序在声明变量的时候,同时指定变量的储存值,而您也看到如何指定字节给字节变量,字节在指定时需使用引号 ' ' 来包括;在指定浮点数时,会习惯使用小数的方式来指定,如0.0,在Java中写下0.0这么一个常量的话,其默认为double数据类型

在声明变量之后,您可以直接调用变量名称来取得其所储存的值,下面这个程序是个简单的示范:

  •  UseVariable.java
public class UseVariable { 
public static void main(String[] args) {
int ageForStudent = 5;
double scoreForStudent = 80.0;
char levelForStudent = 'B';

System.out.println("年级\t 得分\t 等级");
System.out.printf("%4d\t %4.1f\t %4c",
ageForStudent,
scoreForStudent,
levelForStudent);
}
}

执行结果:

 年级     得分    等级
       5       80.0          B


在Java中写下一个数值,称之为字面常量(Literal constant), 它会存在内存的某个位置,您无法改变它的值;而在使用变量的时候,也会使用一种叫“常量”的变量,严格来说它并不是常量,只不过指定数值给这个变量之 后,就不可再改变其值,有人为了区分其与常量的差别,还给了它一个奇怪的名称:“常量变量”。

先不要管“常量变量”这个怪怪的名称,其实它终究是个变量而已,只是在声明变量名称的同时,加上"final"来限定,只不过这个变量一但指定了值,就不可以再改变它的值,如 果程序中有其它程序码试图改变这个变量,编译器会先检查出这个错误,例如:
final int maxNum = 10;
maxNum = 20;

这一段程序码中的maxNum变量使用final来限定,所以它在指定为10之后,就不可以再指定值给它,所以第二次指定会被编译器指出错误:
cannot assign a value to final variable maxNum

使用final来限定的变量,目的通常就是不希望其它的程序码来变动它的值,例如用于循环计数次数的指定(循环之后就会学到),或是像圆周率PI的指定。