数据是储存在内存中的一块空间中,为了取得数据,您必须知道这块内存空间的位置,然而若使用内存位址编号的话相当的不方便,所以使用一个明确的名称
代表储存在内存中的数据,变量(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数据类型。 在声明变量之后,您可以直接调用变量名称来取得其所储存的值,下面这个程序是个简单的示范:
public class UseVariable { 执行结果:
在Java中写下一个数值,称之为字面常量(Literal constant), 它会存在内存的某个位置,您无法改变它的值;而在使用变量的时候,也会使用一种叫“常量”的变量,严格来说它并不是常量,只不过指定数值给这个变量之 后,就不可再改变其值,有人为了区分其与常量的差别,还给了它一个奇怪的名称:“常量变量”。 先不要管“常量变量”这个怪怪的名称,其实它终究是个变量而已,只是在声明变量名称的同时,加上"final"来限定,只不过这个变量一但指定了值,就不可以再改变它的值,如 果程序中有其它程序码试图改变这个变量,编译器会先检查出这个错误,例如: final int maxNum = 10;
maxNum = 20; 这一段程序码中的maxNum变量使用final来限定,所以它在指定为10之后,就不可以再指定值给它,所以第二次指定会被编译器指出错误: cannot assign a value
to final variable maxNum
使用final来限定的变量,目的通常就是不希望其它的程序码来变动它的值,例如用于循环计数次数的指定(循环之后就会学到),或是像圆周率PI的指定。 |