2.2 常量与变量
在编写程序时,经常接触到不同类型的数据。有的数据在程序运行期间是不允许改变的,如数学运算中的圆周率π;有的数据在程序运行期间是需要经常改变的,如价格、数量等。这就需要在程序中有相应的表示。
2.2.1 常量的概念及常量声明
常量是指在程序执行期间其值不能发生变化的数据。常量是固定的,其值在程序运行期间是不能改变的。如整数123,小数1.23,字符'A',布尔常量true、false等。在Java中,常量分为字面常量和字符常量两种。
字面常量:指的是如123、12.34、‘m’、true这样字面上本身就是一个固定值的数据。
字符常量:指的是代表一个固定值的标识符。使用字符常量需要在程序中先声明后使用。
所谓声明一个常量,指的是创建一个常量,为它起一个名字,并指明它所代表的数据类型。如果要声明一个字符常量,就必须使用关键字final。声明字符常量的语法如下。
final常量类型 常量标识符=常量值;
在声明常量时,通常情况下立即为其赋值,即立即对常量进行初始化。例如:
final float PI = 3.14F; //声明一个float类型常量,并初始化为3.14 final int STUENT_NUMBER = 24; //声明一个整型常量,并初始化为24
在声明常量标识符时,按照Java的命名规则,所有的字符都要大写。如果常量标识符由多个单词组成,则在各个单词之间用下画线“_”分隔,如上例中的STUENT_NUMBER。
在上面所示的例子中,是在声明符号常量时,进行初始化的。也可以先声明常量,再进行初始化,例如:
final float PI; //声明一个float类型常量 final int STUENT_NUMBER; //声明一个整型常量 PI = 3.14F; //初始化为3.14 STUENT_NUMBER = 24; //初始化为24
但是初始化以后,就不允许再在程序中对这些常量进行重新赋值,即不允许改变常量的值。例如:
final int STUENT_NUMBER = 24; //声明一个整型常量,并初始化为24 STUENT_NUMBER = 32; //企图修改常量STUENT_NUMBER的值,程序将报错
如果需要声明多个同一类型的常量,可以使用下面的语法:
final常量类型 常量标识符1,常量标识符2,常量标识符3,…; final常量类型 常量标识符1=常量值1,常量标识符2=常量值2,常量标识符3=常量值3;
例如:
final float PI,PRICE,WEIGHT; //声明三个float类型的变量 final float PI=3.14F,price=13.86F,WEIGHT=86.32F; //声明三个float类型的变量,同时进行初始化
2.2.2 变量的概念及变量声明
所谓变量,就是值在程序运行期间可以被改变的量。实际上,变量是程序在运行时内存中能够存储信息的地方,它的值可以在程序的任何地方被动态地改变。所以在编写程序时,经常需要声明变量,向系统申请存储数据的内存空间。
在程序中使用变量,必须先创建它并为它取一个名字,并且指明它能够存储信息的类型,这称为“变量声明”。要在程序中声明一个变量,其语法形式如下。
变量类型 变量标识符;
变量类型会在下一节详细讲述。变量标识符遵循标识符命名规则,第一个单词的首字母小写,其他单词的首字母大写,其他字母一律小写。例如:
String studentName; //声明一个String类型的变量,用来存放学生的姓名 int studentAge; //声明一个int型变量,用来存放学生的年龄
在声明变量时,可以立即为其赋值,即立即对变量进行初始化,例如:
String studentName = "张小明"; //声明一个String类型的变量,并初始化 int studentAge = 18; //声明一个int型变量,并初始化
也可以先声明变量,然后在需要的时候再初始化,例如:
String studentName; //声明一个String类型的变量 int studentAge; //声明一个int型变量 studentName="张小明"; //初始化赋值 studentAge=18; //初始化赋值
也可以同时声明多个同一类型的变量,如:
String studentName , teacherName; //声明两个String类型的变量 String studentName="张小明" , teacherName="王金柱";//声明两个String型变量,并初始化
变量与常量不同。变量的值如果需要的话,可以在程序的任何地方被改变。例如,下面的代码是正确的。
String studentName = "张小明"; //声明一个String类型的变量,并赋初值"张小明" studentName = "李芳"; //改变变量studentName的值为"李芳"