2.2 常量

常量就是在程序的执行过程中其值不能改变的一个标识符。Java中的常量包含整型常量、浮点型常量、字符型常量、布尔型常量、字符串常量五种。

2.2.1 标识符

所谓标识符,就是用来标识变量名、函数名、数组名、文件名、类名等的有效字符序列。Java语言规定的标识符只能是大写字母、小写字母、下画线、数字、美元符号的任意组合,且第一个字母不能为数字。下面列出的就是合法的标识符。

· SumThing

· total

· c4

· total_days

· $day

· _month

下面是一些不合法的标识符。

· a-b

· 4c

· sum/total

· !sum

· #3

· Z.D

需要特别注意的是,Java是区分大小写的。例如,SUM和sum在Java语言中是两个标识符。

2.2.2 常量

在本书前面章节的示例程序中多次用到过常量。本小节将对Java语言中的五种不同类型常量进行详细介绍。

1.整型常量

任何一个整型数字就是一个整型常量。在Java语言中,整型常量有如下所示的三种表示方法。

· 十进制。十进制常量只能用0、1、2、3、4、5、6、7、8、9来表示,不能使用0作为首位(常量0除外)。例如,12、100、99都是十进制整型常量。

· 八进制。八进制常量只能用0、1、2、3、4、5、6、7来表示,且只能用0作为首位。例如,012、02、06都是八进制整型常量。

· 十六进制。十六进制常量只能用0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f,A、B、C、D、E、F来表示,且只能用0x或0X开始。例如,0x9、0Xa9、0x45E都是十六进制整型常量。

如果要定义一个整型常量为长整型(long),则需要在常量后面加上L或l来表示。例如,8345L、99l都是长整型常量。

2.浮点型常量

浮点型常量有单精度浮点数(float)和双精度浮点数(double)两种类型。表示一个单精度浮点数时必须在小数末尾加上F或f。表示一个双精度浮点数时在小数末尾加D或d,也可以不加。因为小数常量默认为double类型。例如,2.1e3、3.234545d、9.13455、5.31f都是浮点型常量。

3.布尔型常量

布尔型常量表示逻辑值,不是真就是假。该类型常量只有两个值:true或false。

4.字符型常量

Java里的字符型常量采用Unicode编码,每个字符常量占用两个字节的空间。一个char类型的字符常量必须包含在单引号内('')。例如,'a'、'abc'、'@@@'都是字符型常量。

Java语言中还允许使用转义字符'\'来将其后的字符转变为其他的含义。例如,“\r”中的“r”不是代表的字母r,而是代表一个“回车”符。常见的特殊转义字符如表2.3所示。

表2.3 转义字符表

'\ddd'和'\udddd'是用Unicode编码表示的一个字符。例如,'\102'代表了转换为十进制后Unicode码为66 的字符'B','\udddd'代表了把十六进制的'dddd'转换为十进制数后所对应的Unicode字符。

5.字符串常量

Java语言中通过用双引号把一连串的字符括起来的形式来表示字符串常量。字符串常量里的转义字符和字符常量里的转义字符用法是一样的。例如,"hello","hello\n"都是字符串常量。

可以把一个常量赋值给一个变量,示例程序的编写方法和步骤如下所示。

(1)新建一个文本文档,用记事本程序打开该文档并输入下面的程序。

    1   // 代码实现
    2   public class Sample2_9
    3   {
    4        public static void main(String[] args)
    5        {
    6            //把十进制常量1赋值给整型变量a
    7            int a = 1;
    8            //把八进制常量012赋值给整型变量b
    9            int b = 012;
    10           //把十六进制常量0X10赋值给整型变量c
    11           int c = 0X10;
    12           //把双精度浮点常量1.2D赋值给双精度变量d
    13           double d = 1.2D;
    14           //把双精度浮点常量1.23e4赋值给双精度变量e
    15           double e = 1.23e4;
    16           //把制表符\t赋值给字符型变量f
    17           char f = '\t';
    18           //把换行符\n赋值给字符型变量g
    19           char g = '\n';
    20           //把单引号\'赋值给字符型变量h
    21           char h = '\'';
    22           System.out.println("变量a的值为:" + a);
    23           System.out.println("变量b的值为:" + b);
    24           System.out.println("变量c的值为:" + c);
    25           System.out.println("变量d的值为:" + d);
    26           System.out.println("变量e的值为:" + e);
    27           System.out.println("输出一个制表符:" + f);
    28           System.out.println("输出一个换行符:" + g);
    29           System.out.println("输出一个单引号:" + h);
    30           System.out.println("输出字符串常量abcd:" + "abcd");
    31
    32       }
    33  }

(2)单击“文件”|“保存”命令,保存这个文件。并把文件重命名为Sample2_9.java。

(3)打开命令提示符窗口,然后输入下面的命令并按“Enter”键编译程序。

    javac Sample2_9.java

(4)输入下面的命令,运行这个程序。

    java Sample2_9

(5)程序的运行结果如图2-9所示。

图2-9 Sample2_9的编译运行结果